Hello,

With recent MSVC versions, we’re obliged to use /FORCE_:MULTIPLE, to work 
around the fact that osgDB.lib includes symbols from std::fstream classes, 
which then causes conflicts when other object files in a target (eg executable) 
being linked use <fstream> classes. This slows down linking since incremental 
linking is disabled, and makes our build output very noisy.

After some discussion, I came up with the following fix:

        
https://github.com/zakalawe/osg/commit/2098c022283f1afeb4bad0ffb4b682b884cc8f32

The idea is to only export the non-inlined symbols from osgDB::ofstream and 
::ifstream, but not to export the entire class, since doing so forces MSVC to 
also export the constructor and destructor for the base class (std::ofstream 
and std::ifstream).

Since we don’t use the osgDB versions of fstream in FlightGear, I can’t check 
if this is backwards compatible for other Windows OSG users, but I am hopeful 
that it is, and hence that this approach could be upstreamed. 

Kind regards,
James

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to