Hi,

Thanks for the suggestions. I made the changes you recomened but it
seems to have had no effect on my problems. When I tried rebuilding
after the change I got the following results:

OpenThreads, Builds fine.
osg, Builds fine.
osgUtil: 60 warnings about duplicate symbols from OpenThreads
osgText (which built osgDB first): 2126 warnings about duplicate symbols
from both OpenThreads and osg.

Some examples:

osg35-osg.lib(VertexProgram.obj) : warning LNK4006: "public: static void
__cdecl osg::VertexProgram::discardDeletedVertexProgramObjects(unsigned
int)" ([EMAIL PROTECTED]@osg@@[EMAIL PROTECTED])
already defined in osg35-osgDB.lib(VertexProgram.obj); second definition
ignored

osg35-osg.lib(WIN32Condition.obj) : warning LNK4006: "public: virtual
int __thiscall OpenThreads::Condition::wait(class OpenThreads::Mutex
*,unsigned long)" ([EMAIL PROTECTED]@OpenThreads@@[EMAIL PROTECTED]@[EMAIL 
PROTECTED])
already defined in osg35-osgDB.lib(WIN32Condition.obj); second
definition ignored

The drails of what I did are:
I modified the files as suggested (in 16 files, I am not building any
plugins / applications or the wrappers).
I reconfigured the static project using cmake.
I checked the preprocessor definintions in Visual Studios. Osg, osgUtil,
osgDB and osgText all had OSG_LIBRARY_STATIC OT_LIBRARY_STATIC defined.

Any further suggestions would be very welcome.

Cheers,

Brad

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Stephan
Maximilian Huber
Sent: Monday, 21 July 2008 5:21 PM
To: OpenSceneGraph Users
Subject: Re: [osg-users] OSG2.4 and 2.5.5 Windows static build problems

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

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g



DISCLAIMER:---------------------------------------------------------------------------
This e-mail transmission and any documents, files and previous e-mail messages
attached to it are private and confidential. They may contain proprietary or 
copyright
material or information that is subject to legal professional privilege. They 
are for
the use of the intended recipient only.  Any unauthorised viewing, use, 
disclosure,
copying, alteration, storage or distribution of, or reliance on, this message is
strictly prohibited. No part may be reproduced, adapted or transmitted without 
the
written permission of the owner. If you have received this transmission in 
error, or
are not an authorised recipient, please immediately notify the sender by return 
email,
delete this message and all copies from your e-mail system, and destroy any 
printed
copies. Receipt by anyone other than the intended recipient should not be 
deemed a
waiver of any privilege or protection. Thales Australia does not warrant or 
represent
that this e-mail or any documents, files and previous e-mail messages attached 
are
error or virus free.
--------------------------------------------------------------------------------------

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to