Hi Sukender,

Add /FORCE:MULTIPLE to your link options

-Fred

----- "Sukender" a écrit :

> Hi all,
> 
> Any update on this side? I've got the same issue (I use fstream in my
> project which depends on osgDB, under VC2010 x64).
> Or is there a way to temporarily workaround this in OSG with an ugly
> #ifdef?
> 
> Sukender
> PVLE - Lightweight cross-platform game engine -
> http://pvle.sourceforge.net/
> 
> ----- "Anders Backman" <[email protected]> a écrit :
> 
> > Ok, I have localized the problem.
> >
> >
> > For example, the class osgDB::fstream:
> >
> >
> >
> > class OSGDB_EXPORT fstream : public std::fstream
> > {
> >
> >
> > };
> >
> >
> > which just inherits from std:.fstream causes the symbols of
> > std::fstream to be exposed into osgDB.dll
> >
> >
> > This effectively means that It might cause problems for people
> linking
> > against osgDB.dll later on.
> > Same goes for inheriting from std::string, std::ostringstream etc.
> >
> >
> > This must obviously be a bug, a very serious one in VS2010.
> > We had a class derived from std::ostringstream, which exposed the
> > symbols in the vtable for the class:
> >
> >
> > namespace ns
> > {
> > class Notify : public std::ostringstream
> > {
> > };
> > }
> >
> >
> > Using depends.exe to analyze the dll-file gives:
> >
> >
> > const ns::Notify::`vftable'{for
> `std::basic_ostringstream<char,struct
> > std::char_traits<char>,class std::allocator<char> >'}
> >
> >
> > My issue was reported to the msdn forum. Their first take was: Oh
> you
> > use CMake, thats not our product :-)
> > But in later threads, they tried to reproduce the problem without
> > luck...
> > So if you manage to reproduce this in a small example, go ahead and
> > post it. We must make them aware of this problem.
> >
> >
> >
> http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/191de00a-53c9-4bd9-9cb6-e844eb224ca2
> >
> >
> > /Anders
> >
> > On Mon, Aug 30, 2010 at 4:31 AM, Christiansen, Brad <
> > [email protected] > wrote:
> >
> >
> >
> >
> >
> >
> > Hi,
> >
> >
> >
> > Unfortunately I can't offer a solution, but I thought I would
> mention
> > I have come across this exact problem and have also pulled my hair
> out
> > trying to find a solution. This same problem exists when building
> > virtual planet builder, linking with osgDB causes the multiply
> defined
> > symbols. I had no other issues building the 3rd party libs and osg
> > with 2010.
> >
> >
> >
> > The only way I could move forward was to allow multiply defined
> > symbols (as has already been mentioned). I agree this seems
> dangerous
> > and is not a solution but it has allowed me to continue working. So
> > far it hasn’t caused any issues with my vpb build.
> >
> >
> >
> > Given you have used the streams extensively without issue and it
> seems
> > osgDB is the source of the trouble, have you had a look to see if
> > there is any discernable difference between your code and that in
> > osgDB ?
> >
> >
> >
> > I would love to find a solution to this.
> >
> >
> >
> > Cheers,
> >
> > Brad
> >
> >
> >
> >
> > From: [email protected] [mailto:
> > [email protected] ] On Behalf Of Anders
> > Backman
> > Sent: Friday, 27 August 2010 4:00 PM
> > To: OpenSceneGraph Users
> > Subject: Re: [osg-users] OT: VS2010 LNK2005 problem related to
> > ostringstream
> >
> >
> >
> >
> >
> >
> >
> > I have verified the build mode for all ingoing libraries.
> >
> >
> >
> >
> >
> > I build all the dependencies myself. Including OSG.
> >
> >
> >
> >
> >
> > The problem I have (which is OSG related), is that if I build
> without
> > OSG support (no rendering), it all works.
> >
> >
> > And I still use std::ostringstream and std::stringstream quite
> > extensively...
> >
> >
> > We still link against OpenThreads (but no rendering).
> >
> >
> >
> >
> >
> >
> >
> >
> > So only when I link against osg (osg.lib, osgDB.lib, osgText.lib,
> > osgShadow.lib, osgViewer.lib osgGA.lib) I get this problem.
> >
> >
> >
> >
> >
> > I have verified that osg (and OpenThreads) are all built
> consistently
> > all over the field. Release and /MD (MultiThreadedDLL), which is
> > default from CMake.
> >
> >
> >
> >
> >
> >
> >
> >
> > So I can use/link against OpenThreads.lib, but not OSG...
> >
> >
> >
> >
> >
> > Rather nasty problem, I'm trying to reduce it, but I'm getting
> > nowhere.
> >
> >
> > And once again, same settings, same CMake version, same code all
> over
> > the place, and it works in VS2008...
> >
> >
> >
> >
> >
> > /A
> >
> >
> >
> >
> >
> > On Thu, Aug 26, 2010 at 8:17 PM, Simon Hammett <
> > [email protected] > wrote:
> >
> > Ah ok, then next things to check:
> >
> > Make absolutely sure you aren't mixing up objects & libraries from
> the
> > different builds.
> > For my projects I include a vc version number in the name, so
> > .vc7.lib/vc7.dll & .vc9.lib/.vc9.dll
> > and I also use the vc version in the name of output & intermediate
> > directory
> >
> > Then check all the code for any use of
> >
> > #pragma comment(lib, "libname")
> >
> > and make sure any preprocessor guards that select different versions
> > have been updated to know about vc2010.
> >
> >
> >
> >
> >
> >
> >
> >
> > On 26 August 2010 18:37, Anders Backman < [email protected] > wrote:
> >
> > Well, I have verified that ALL the dependencies Im using are all
> built
> > with /MD and NOT debug.
> >
> >
> > Im building all of the dependencies for osg and our lib myself, so I
> > got full control.
> >
> >
> >
> >
> >
> > Also, as I wrote before, I have even tried to build our libs using
> > project files generated from cmake > vs2008, build with vs2008 ->
> > works ok.
> >
> >
> > Open same project files in vs2010 -> problem occurs.
> >
> >
> > Im using buildscripts to build dependencies, and it all works for
> > vs2008...
> >
> >
> > No external libraries, everything is built from code.
> >
> >
> >
> >
> >
> > For VS2010, all the dependencies (including osg 2.8.3) builds/links
> > fine.
> >
> >
> > But for my libs, I get the linking errors.
> >
> >
> >
> >
> >
> > Allowing multiple symbols sounds dangerous, and it did not resolve
> my
> > problem...
> >
> >
> >
> >
> >
> > /A
> >
> >
> >
> >
> >
> > On Thu, Aug 26, 2010 at 7:26 PM, Simon Hammett <
> > [email protected] > wrote:
> >
> >
> >
> >
> > On 26 August 2010 17:35, Anders Backman < [email protected] > wrote:
> >
> > <snip>
> >
> >
> >
> >
> >
> >
> > CMake defaults to /MD code generation (MultiThreaded). Im using this
> > consistently over all my libraries (just double checked to be sure).
> >
> >
> > Never use that setting unless you know what you are doing.
> >
> > Change every project to
> >
> > Multi-threaded Debug DLL (/MDd) for Debug builds and
> > Multi-threaded DLL (/MD) for Release builds
> >
> > And it will all start working.
> >
> > Those Runtime library settings are the number one 'gotch-ya' for
> > Visual studio, and Cmake defaulting to them is daft.
> >
> > --
> > http://www.ssTk.co.uk
> >
> > _______________________________________________
> > osg-users mailing list
> > [email protected]
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > osg-users mailing list
> > [email protected]
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
> >
> >
> >
> > --
> > http://www.ssTk.co.uk
> >
> >
> > _______________________________________________
> > osg-users mailing list
> > [email protected]
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
> >
> >
> >
> 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
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > osg-users mailing list
> > [email protected]
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to