6

我正在尝试将 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 没有在任何地方提及。

4

3 回答 3

7

好吧,我忘了把 BOOST_ALL_DYN_LINK 放在预处理器定义中。如果 BOOST_ALL_DYN_LINK 未定义,boost 会寻找静态库,这就是它寻找 libboost_thread-vc100-mt-gd-1_55.lib 的原因

于 2014-03-19T04:17:13.890 回答
1

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

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

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

于 2015-03-04T21:08:05.673 回答
0

此外 ,

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

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

qi_use_lib(yourProgramName your libraries)

像这样:

qi_use_lib(getimages ALCOMMON ALPROXIES ALVISION OPENCV2_CORE OPENCV2_HIGHGUI OPENCV2_IMGPROC)
于 2016-04-12T14:50:33.403 回答