使用boost进行编译时出错

Rob*_*ert 4 c++ boost include

我写了一个使用的项目<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.

我做错了什么?

小智 7

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

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

    请务必选中相应的复选框Multithreaded debug, static runtime(我建议您将它们全部标记)

    湾 如果您自己构建了库:

    打开控制台窗口
    将目录更改为升压根
    以下命令构建所需的库:
    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. 使链接器使用您想要的库
    .使自动链接使用共享库

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

    湾 禁用自动链接

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