我试图将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在任何地方都没有提到。
答案 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)