在调试模式下使用 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 的发布版本的主要内容,如果未能解决你的问题,请参考以下文章
使用发布 CRT 在调试中构建应用程序,但在 boost 上存在依赖问题
在 MFC dll 中包含 boost mutex 头文件时断言