4

我编写了使用的项目<boost/thread/locks.hpp>,我将include目录添加到链接器Additional Include directories,并将lib文件夹添加到链接器。但是当我尝试构建解决方案时,错误:

错误 1 ​​错误 LNK1104:无法打开文件 'libboost_thread-vc100-mt-sgd-1_50.lib'

我在 lib 目录中搜索了此文件,但在 lib 目录中没有此名称的文件。我找到了具有相似名称的文件 libboost_thread-vc100-mt-gd-1_50

我做错了什么?

4

1 回答 1

8

您的问题似乎与此问题中的问题非常相似。根据此处描述的命名约定,链接器要使用的库与您拥有的库之间的唯一区别是前者静态链接到 c++ 标准库和编译器运行时支持库。我可以想到两种方法来解决这个问题:

  1. 获取链接器想要的库
    。如果您使用了 boostpro 安装程序:

    确保选中复选框Multithreaded debug, static runtime(我建议您全部标记)

    湾。如果您自己构建了库:

    打开一个控制台窗口
    将目录更改为您的 boost 根
    以下命令构建所需的库:(
    b2 toolset=msvc-10.0 --with-thread address-model=64 variant=debug link=static runtime-link=static runtime-debugging=on stage
    我建议使用
    b2 toolset=msvc-10.0 address-model=64 --build-type=complete stage:)

  2. 使链接器使用您想要的库
    。使自动链接使用共享库

    您可以在包含头文件之前定义 BOOST_THREAD_DYN_LINK(仅影响线程库)或 BOOST_ALL_DYN_LIB(影响所有 boost 库)(或者最好在您的 VC 项目预处理器设置中)。这将使链接器尝试使用该库boost_thread-vc100-mt-gd-1_50.lib(请注意缺少 lib- 前缀)。

    湾。禁用自动链接

    您可以定义 BOOST_ALL_NO_LIB 然后在链接器选项中添加库的确切名称

于 2012-07-08T17:04:09.617 回答