错误LNK1104:无法打开文件' libboost_thread-vc100-mt-gd-1_55.lib'

时间:2014-03-18 08:27:09

标签: visual-studio-2010 boost linker-errors dynamic-linking boost-build

我试图将boost线程的共享库链接到我的应用程序中。

系统:Windows8

IDE:Visual Studio 2010

我使用以下方法构建了boost库:

b2 --with-thread --build-type=complete link=shared

我可以看到

boost_thread-vc100-mt-gd-1_55.dll
boost_thread-vc100-mt-gd-1_55.lib

和stage / lib目录中的其他文件

我已将链接器选项中的附加库目录和输入路径添加为:

其他图书馆目录:C:/boost_1_55_0_dyn/stage/lib

输入:C:\boost_1_55_0_dyn\stage\lib\boost_thread-vc100-mt-gd-1_55.lib

我不知道为什么在地球上Visual Studio正在寻找libboost_thread-vc100-mt-gd-1_55.lib。我还没有在属性或任何地方提到过libboost_thread-vc100-mt-gd-1_55.lib。我甚至搜索项目中的所有文件和文件夹,libboost_thread-vc100-mt-gd-1_55.lib在任何地方都没有提到。

3 个答案:

答案 0 :(得分:7)

好吧,我忘了将BOOST_ALL_DYN_LINK放在预处理器定义中。如果未定义BOOST_ALL_DYN_LINK,则boost会查找静态库,这就是为什么它要查找libboost_thread-vc100-mt-gd-1_55.lib

答案 1 :(得分:0)

这是Pritesh已经发布的答案的附加信息,但我是新来的,所以我无法发表评论。

归结为VS项目设置与boost库的构建方式之间的兼容性。它有点棘手,因为boost和VS会为你做一些自动循环。查看文件... \ Include \ boost \ config \ Auto_link.hpp。它解释了将导致您未明确包含的库显示在项目中的算法和宏。

例如,BOOST_ALL_DYN_LINK用于帮助确定在自动链接期间,提升库名称是否应在名称前加上“lib”。

答案 2 :(得分:0)

此外,

如果你正在使用cmake和qibuild,你可以试试这个:

它会自动链接到相应的库并使其标题可用。

get()
像这样:

qi_use_lib(yourProgramName your libraries)