在编译Debug项目时是否可以指示MSVC使用Boost的发行版?

时间:2009-07-24 02:37:15

标签: c++ boost visual-c++

我在发布配置中构建了Boost并将其上传到一个文件夹中。 现在,当我将Boost库添加到项目中并尝试在Debug配置中构建它时 - 链接器失败,因为没有Debug版本库。

在构建Debug配置时,有没有办法让MSVC 9.0使用Release版本的库?

当然,有一个简单的灵魂 - 构建Boost的Debug版本。但我只是好奇。

4 个答案:

答案 0 :(得分:3)

你可以做两件事:

  • 构建boost的调试版本(这是最佳选择)。
  • 将调试符号添加到发布版本中。

您不能在调试版本中使用boost的发行版本,因为boost取决于CRT,这在调试/发布版本中是不同的。

答案 1 :(得分:0)

排除调试libs boost尝试链接(或禁用预处理器定义,查看config.hpp)并手动包含发行版本。

也就是说,如果不是因为运行时冲突,你可以试试......

(所以这是一个否)

答案 2 :(得分:0)

我也遇到了这个问题,我还有一些事要补充:

我认为答案在于boost \ config \ auto_link.hpp。它看起来像包含这个文件(可能发生在所有.lib / .dll,非标题库,库)使生成的.obj引用库的调试版本。

定义BOOST_ALL_NO_LIB将允许链接成功,使程序的调试版本链接到库的发行版本。但是,当实际尝试使用像这样链接的Boost序列化时,我得到了“访问冲突读取位置0xabababeb”,这意味着某些指针未被初始化。也许这可以通过在发布模式下编译其他东西来解决,但最好只使用Boost调试。

答案 3 :(得分:0)

第一......这可能是一个坏主意,只需构建调试库(或者你可以从my site获取它们。)

如果您仍想继续,请尝试进入项目属性 - >配置属性 - > C \ C ++ - >代码生成。您的“运行时库”设置可能类似于“多线程调试DLL(/ MDd)”,尝试将其更改为可竞争选项而不使用“Debug”并重新构建。

我自己实际上没有尝试过,但我认为它应该可行。我很好奇你是否成功: - )

相关问题