c++ - 是否可以将 Debug模式编译的库链接到 Release模式的项目?

标签 c++ shared-libraries static-libraries

我在 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/

相关文章:

c++ - 共享库 (c/c++) 中的 pstack。损坏的共享库

c++ - 哪个库链接到用户 boost::intrusive_ptr

c++ - 静态和动态链接库

C++:引用静态库的静态库

C++ 聚合没有虚函数?

c++ - 有人能给我一个支持代理的非托管 C++ HTML 客户端的例子吗?

c++ - 传递模板参数

c++ - 未解析的外部符号(OpenGL 和 C++)

linux - GNU 库 - 哪个库会有 _POSIX_OPEN_MAX 符号?

c++ - 尽管有静态链接,Opencv 3.2.0 .dll 仍然丢失