我在 C++ 和 Visual Studio 中有一个处于 Debug模式的编译库(静态 .lib),我想在一个将在 Release模式下编译的项目中使用它。这可能吗?我无法在 Release模式下编译库:(
让我问一个更笼统的问题:在使用图书馆时我应该注意哪些注意事项?
最佳答案
对于 Visual Studio(2005 及更高版本),STL 容器和迭代器等类在调试和 Release模式下默认定义不同,并且具有不同的内存布局。如果您通过链接静态库(或调用其接口(interface)包含此类的动态库)来混合此类类的调试版本和发布版本,那么您将遇到麻烦。
我相信,但我不是 100% 确定,对于 MSVS 2005 和 2008,代码将链接,并且您将在运行时遇到神秘的崩溃,而对于 MSVS 20010 和 2012,代码将无法链接。
在 Debug模式下编译时,您可以通过定义宏 _SECURE_SCL 来强制 Visual Studio 使用 STL 容器和迭代器的发布版本。为 0。
关于c++ - 是否可以将 Debug模式编译的库链接到 Release模式的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13315310/