使用boost进行编译时出错

时间:2012-07-08 15:56:21

标签: 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的文件。

我做错了什么?

1 个答案:

答案 0 :(得分:7)

您的问题似乎与this question中的问题非常相似。根据{{​​3}}描述的命名约定,链接器想要使用的库与您拥有的库之间的唯一区别是前者静态链接到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,然后在链接器选项中添加库的确切名称

相关问题