Hi Brian,

Are you sure about Boost 1.36 defining _SCL_SECURE=0 and 
_HAS_ITERATOR_DEBUGGING=0? I just made a search with _SCL_SECURE on Boost 1.36 
sources and came up with nothing.

Our experience with Visual Studio 2005 and higher is the following.

By default, in Debug, VC defines:
_HAS_ITERATOR_DEBUGGING=1
_SCL_SECURE=1

By default, in Release, VC defines
_HAS_ITERATOR_DEBUGGING=0
_SCL_SECURE=1


Defining _HAS_ITERATOR_DEBUGGING=1 *requires* linking with the Debug version of 
the C++ runtime (cf. MSDN doc).

As far as Boost is concerned, I know there has been some talk about disabling 
checked iterators in Release (i.e. _SCL_SECURE=0) on VC. But AFAIK currently it 
still uses the compiler defaults (and will probably keep it that way, unless 
explicitly asked by the user).

Our policy for compiling all our C++ libraries is to stick to VC defaults 
except for Release mode where we define _SCL_SECURE=0.

>From our experiences, this is a very subtle but yet dangerous area. Failure to 
>make sure that all C++ libraries are compiled with the same defines for 
>_HAS_ITERATOR_DEBUGGING and _SCL_SECURE has brought to us all kind of very 
>subtle crashes/data corruptions (some of them were only discovered after 
>months!).


Regards,

Tanguy


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Brian Stewart
Sent: Tuesday 02 December 2008 15:52
To: OpenSceneGraph Users
Subject: Spam: Re: [osg-users] msvc90 dependencies

Hi Mattias,

I have been meaning to do exactly what you have done, but have not gotten 
around to it. According to Microsoft, if your libraries have only plain C 
interfaces, and don't use STL internally, then you can get away with mixing 
libraries from different versions of their compiler. When I quickly looked over 
the third party libs for OSG they all seemed to be C (but I could have easily 
missed something), except for maybe the input device one, which we don't use, 
so we just used the VS8 third party libs while building OSG for VS9. But I have 
been meaning to get around to building everything for VS9, just to be safe. Are 
your binaries built with _SCL_SECURE=0 and _HAS_ITERATOR_DEBUGIING=0? This 
would only apply to C++ third party libs, but as J-S pointed out, it does cause 
binary incompatibilities, similar to those caused by mixing /MT and /MD 
binaries. We turn these two features off for performance reasons, and we 
recently discovered that boost 1.36.0 now hardwires them to off - so a
 nyone linking with this version (or I assume a later version as well) of boost 
would need to build OSG and their own code with these two features disabled as 
well.
On Mon, Dec 1, 2008 at 7:33 PM, Mattias Helsing <[EMAIL PROTECTED]> wrote:
Hi all,

I have seen in recent posts that people aren't aware of my set of
prebuilt binaries for vc90. It is here:

http://www.openscenegraph.org/projects/osg/wiki/Community/People/MattiasHelsing

It has been there since early sept.

A few people have requested that it be linked to from the win32
dependencies wiki page but I have refrained from poking Robert about
this since I know that Mike has a plan for msvc90. Until then the link
may be a good idea.

cheers
Mattias
_______________________________________________
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