It is very common in C++ development to use multiple third-party libraries in a single project. Recently I have faced one problem while dealing with Standard Template Library related things.
Microsoft Visual C++ have added one extension to STL for checking iterator and validation. And in visual studio 2005 and 2008 this preprocessor macro is enable and it visual studio 2010 it is disable by default in Release/ship build.
While using multiple libraries in a project care must be taken to maintain this Macro setting same in all translation units else something undefined behaviour happen like crash etc…
Since there is no way to know whether these macro is enable/disaable in any translation unit, library. So one must ensure while building the library for having the similar setting for these macro.
One more thing if you are using visual studio 2010, then there are chances that you will get linking error if all the translation units / libraries does not have these macro setting similar. As Visual studio team have added this pragma for checking at compile time..
For mor info:
http://forums.adobe.com/message/4317902#4317902
http://connect.microsoft.com/VisualStudio/feedback/details/524141/serious-bug-when-using-secure-scl-0-c
This is very intutive video where c++ stl developer is explaning about “STL Iterator Debugging and Secure SCL”
http://channel9.msdn.com/Shows/Going+Deep/STL-Iterator-Debugging-and-Secure-SCL