在调试模式下使用 boost libs 的发布版本

Posted

技术标签:

【中文标题】在调试模式下使用 boost libs 的发布版本【英文标题】:using the release version of boost libs in debug mode 【发布时间】:2013-08-12 13:48:47 【问题描述】:

我有一个可视化 C++ 项目。我无法在调试模式下使用 boost_filesystem-vc110-mt-1_54.lib 的发布版本,并且它一直要求 boost_filesystem-vc110-mt-gd-1_54.lib。我知道调试模式应该使用调试库,但我不想构建并保留调试版本。我确实尝试了运行时库设置。

如何做到这一点?

【问题讨论】:

您是说要在项目的调试版本中使用 boost 的发布版本吗? 为什么?为什么要这样做? 【参考方案1】:

简短的回答:你不知道。 Boost 使用了 C++ 运行时的一部分,它们在 Debug 和 Release 中的工作方式不同,所以东西最终是 likely to break。

但是,如果您绝对想在脚下开枪:您可以通过设置 BOOST_ALL_NO_LIB 预处理器标志来阻止自动链接,然后手动链接到发布二进制文件。

【讨论】:

【参考方案2】:

你真的,真的不应该在调试版本中使用 Boost 的发布版本,因为(正如 ComicSansMS 所说)它链接到发布运行时库,而你的调试构建链接到调试运行时库。

如果你真的想要 Boost 的发布版本(在 Filesystem 的情况下,我必须强调这可能没有用),你将不得不编译你自己的,它已经过优化但链接到调试运行时。

【讨论】:

以上是关于在调试模式下使用 boost libs 的发布版本的主要内容,如果未能解决你的问题,请参考以下文章

构建 Boost Python 调试

使用发布 CRT 在调试中构建应用程序,但在 boost 上存在依赖问题

调试模式下内存映射向量的读取访问冲突

在 MFC dll 中包含 boost mutex 头文件时断言

在调试模式下在 Windows 上启动 lib/main.dart... 无法构建:找不到 vcvars64.bat

ubuntu 16.04 下更换boost版本