|Posted: Tue Dec 02, 2008 4:18 pm Post subject:
Spam: Re: msvc90 dependencies
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:
By default, in Release, VC defines
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!).
From: [mailto:] On Behalf Of Brian Stewart
Sent: Tuesday 02 December 2008 15:52
To: OpenSceneGraph Users
Subject: Spam: Re: msvc90 dependencies
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 <> wrote:
I have seen in recent posts that people aren't aware of my set of
prebuilt binaries for vc90. It is here:
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.
Post generated by Mail2Forum