C++ 致命错误LNK1104:无法打开文件';libboost_system-vc110-mt-gd-1_51.lib';

C++ 致命错误LNK1104:无法打开文件';libboost_system-vc110-mt-gd-1_51.lib';,c++,boost,C++,Boost,看来我没办法让它工作。我制作了一个简单的控制台应用程序(依赖于websocket++library),它需要Boost库。。但当我尝试编译时,我得到: 致命错误LNK1104:无法打开文件“libboost_system-vc110-mt-gd-1_51.lib” 但是,我做了bjam,它在(boost_root)/stage/libs中创建了lib,并且我将libs的路径链接到编译器C++/Additionnals includes 如果我查看(boost\u root)/stage/libs

看来我没办法让它工作。我制作了一个简单的控制台应用程序(依赖于
websocket++
library),它需要
Boost
库。。但当我尝试编译时,我得到:

致命错误LNK1104:无法打开文件“libboost_system-vc110-mt-gd-1_51.lib”

但是,我做了bjam,它在
(boost_root)/stage/libs
中创建了lib,并且我将libs的路径链接到编译器
C++/Additionnals includes

如果我查看
(boost\u root)/stage/libs
文件
libboost\u system-vc110-mt-gd-1\u 51.lib
。它被称为
libboost\u system-vc110-mt-sgd-1\u 51.lib

有什么想法吗?< /P> < P> C++→ 一般的→ 附加的Include Directories参数用于列出编译器将在其中搜索头文件的目录


您需要告诉链接器在哪里查找要链接到的库。要访问此设置,请在“解决方案资源管理器”窗口中的项目名称上单击鼠标右键,然后单击“属性”→ 连接器→ 一般的→ 附加库目录。在此处输入
\stage\lib
(如果您使用默认选项,这是库所在的路径)。

如果您在构建boost时遇到问题或不希望这样做,另一种方法是从下载lib文件。该链接将带您进入1.51版的压缩库和dll文件文件夹。但是,您应该能够编辑链接以指定所选的版本。显然BoostPro的安装程序有一些问题。

我也有同样的问题。这是因为我用Visual C++ 2010(V100)编译了Boost,我尝试错误地使用VisualStudio 2012(V110)的库。
因此,我将配置(在Visual Studio 2012中)更改为Project properties->General->Plataform Toolset,并将值从Visual Studio 2012(v110)更改为Visual Studio 2010(v100)

< P>我遇到了同样的问题,我的错误是我安装了二进制BooSoG1Y55,0MSVC-11-32.EXE,用VC++ 2010,它有版本V100(ProjkProjixProtox:CytoAtdioProtox:Goovi-PotoFotoSoT),而不是V110作为Visual C++ 2012。所以我加载了boost_1_55_0-msvc-10.0-32.exe,现在一切都正常了 首先将boost库解压缩到您选择的任何目录。我推荐
c:\directory

  • 打开VisualC++。
  • 创建一个新项目
  • 右键单击项目
  • 单击属性
  • 单击C/C++
  • 单击“常规”
  • 选择其他包含库
  • 包括库目的地。e、 g.
    c:\boost\u 1\u 57\u 0
  • 单击预编译器标题
  • 单击创建/使用预编译标题
  • 选择“不使用预编译头”
  • 然后,如果您遇到问题,请转到链接库

  • 转到的文件是
    c:\boost\u 1\u 57\u 0
  • 单击
    booststrap.bat
    (不用费心在命令窗口中键入,请稍候,不要关闭我花了两周时间才解决问题的窗口。过了一段时间,
    booststrap
    将运行并生成相同的文件,但现在有两个不同的名称:
    b2
    bjam
  • 单击
    b2
    并等待它运行
  • 单击
    bjam
    并等待它运行。然后将生成一个名为
    stage
    的文件夹
  • 右键单击项目
  • 单击属性
  • 点击链接器
  • 单击“常规”
  • 单击IncludeAdditionalLibrary目录
  • 选择库的部分,例如
    c:\boost\u 1\u 57\u 0\stage\lib

  • 您也可以开始了!

    Visual Studio 2015(社区版)中尝试使用增强单元测试时,我遇到了类似的问题:

    致命错误LNK1104:libboost\u单元测试\u框架-vc140-mt-1\u 57

    所以我想分享我的解决方案

    您可以通过两种方式创建boost单元测试项目(此解决方案适用于这两种方式):

  • 使用
  • 或者创建Win32 Console应用程序(),并用boost单元测试函数()替换主函数
  • 以下是我为使这两个项目正常运行所遵循的步骤:

    首先,下载所需的boost版本(例如,)。您可以使用正确的二进制文件(使用msvc v140编译)下载boost,也可以通过从命令行运行以下命令自己提取二进制文件:

  • bootstrap.bat
  • “C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat”x86
  • 比亚姆——干净
  • bjam-j4--debug symbols=on--build type=complete toolset=msvc-14.0 threading=multi-runtime link=shared 地址模型=32
  • 其中msvc-14.0指定我们需要Visual Studio 2015版本(VS 2015=v14.0=v140),而address model=32指定我们需要平台32(但64位也可以这样做)

    获得二进制文件后,转到Visual Studio,选择已创建的Boost单元测试项目。转到项目属性>配置(从主菜单)并做出以下选择:

    • 将“常规>平台工具集”设置为Visual Studio 2015(v140)

    • 将boost文件夹的路径(例如C:\boost\u 1\u 57\u 0)和包含二进制文件的子文件夹的路径(例如C:\boost\u 1\u 57\u 0\stage\lib)包含在:

      • C\C++>附加包含目录
      • 和“链接器>附加库目录”

      • 我在这里报告了相同的问题。 我解决了将mainTest.cpp从subf移动的问题
        <AdditionalDependencies>$(DK_BOOST)\lib64\libboost_regex-mt-sgd.lib</AdditionalDependencies>
        
        <IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>