[osg-users] OSG2.4 and 2.5.5 Windows static build problems

Stephan Maximilian Huber ratzfatz at digitalmind.de
Mon Jul 21 02:21:15 PDT 2008


Christiansen, Brad schrieb:
> Hi,
>
> I have searched the archive but cant find any mention of the problem,
> though I think can remember reading about a solution some time ago on
> the list.
>
> I have just tried to build the static version of OSG v2.4 and v2.5.5
> using ViualStudio .Net 2003. When I do this build I get 5000+ warnings
> about dulpicate definitions when linking (LNK 4006). I then cannot link
> my aplication against the resulting .libs. Has anyone else encountered
> this problem and have a fix / workaround?
Are these link-errors related to OpenThreads? A quick and dirty fiy 
would be:

change CMakeLists for all osg-libs/src from

IF   (DYNAMIC_OPENSCENEGRAPH)
    ADD_DEFINITIONS(-DOSG_LIBRARY)
ELSE (DYNAMIC_OPENSCENEGRAPH)
    ADD_DEFINITIONS(-DOSG_LIBRARY_STATIC)
ENDIF(DYNAMIC_OPENSCENEGRAPH)


to

IF   (DYNAMIC_OPENSCENEGRAPH)
    ADD_DEFINITIONS(-DOSG_LIBRARY)
ELSE (DYNAMIC_OPENSCENEGRAPH)
    ADD_DEFINITIONS(-DOSG_LIBRARY_STATIC)
    ADD_DEFINITIONS(-DOT_LIBRARY_STATIC)
ENDIF(DYNAMIC_OPENSCENEGRAPH)


The underlying problem is:

The setting, that you compiled OpenThreads statically is not carried out 
to a public header or something. If another lib includes a header-file 
of  OpenThreads the compiler thinks, that OpenThreads is linked for 
dynamic-usage (because OT_LIBARY_STATIC is not defined so the 
EXPORT-definition for OpenThreads is not setup correctly), so you'll get 
multiple defined symbols, when you try to link your app with static 
OpenThreads and static osg, because osg includes OpenThreads-symbols for 
dynamic-linking.

IMHO the definition of OT_LIBARY_STATIC should be carried out to 
OpenThreads/Config. The same should be done for OSG_LIBRARY_STATIC. On 
Linux there's no such problem, because you don't have to declare 
different exports for static versus dynamic linking.

I am no expert in CMake, so perhaps somebody may jump in here?

cheers,
Stephan




More information about the osg-users mailing list