为什么boost要查找libboost _ * .lib而不是boost _ *。lib?

时间:2016-12-16 22:41:50

标签: c++ boost

我使用标记布局编译了boost库,因此我有boost_program_options-mt.lib形式的库文件。我假设问题是boost_auto_link或其他什么。我有预处理器定义BOOST_AUTO_LINK_TAGGED,虽然我仍然收到错误,说Visual Studio正在寻找libboost版本并且无法打开文件。

Error   LNK1104 cannot open file 'libboost_program_options-mt.lib'  

如何解决此问题,以便我可以正确链接到库?

  

更新:出于某种原因,当我启动程序时,我收到一条错误消息,指出我的计算机缺少boost_system-mt.dll。这非常奇怪,因为我没有链接到动态库,也没有动态库包含在我的附加库目录中。

1 个答案:

答案 0 :(得分:0)

摘自here中提到的boost文档:

  

BOOST_ALL_NO_LIB
  告诉配置系统不要自动选择要链接的库。通常,如果编译器支持#pragma lib,则只需选择包含该库头之一的行为,即可自动选择并链接正确的库构建变体。该宏关闭了该功能。

因此,我认为如果您在预处理器定义中定义BOOST_ALL_NO_LIB,然后将库的路径添加到库路径列表中,将可以解决此问题。