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

fatal error LNK1104: cannot open file 'libboost_system-vc110-mt-gd-1_51.lib'

本文关键字:libboost system-vc110-mt-gd-1 lib 文件 LNK1104 致命错误      更新时间:2023-10-16

似乎我无法使它起作用。我制作了一个简单的控制台应用程序(取决于websocket++库),它需要Boost库..但是当我尝试编译时,我得到了:

致命错误lnk1104:无法打开文件'libboostrongystem-vc110-mt-gd-1_51.lib'

但是,我做了(boost_root)/stage/libs中创建LIB的BJAM,然后将LIB的路径链接到编译器C++/Additionnals includes

如果我在(boost_root)/stage/libs中查看文件libboost_system-vc110-mt-gd-1_51.lib不存在。它称为 libboost_system-vc110-mt-sgd-1_51.lib

有什么想法?

这是像我这样的业余爱好者的最简单方法,他自己学习C :

首先将Boost库解压缩为您选择的任何目录。我推荐c:directory

  1. 打开视觉C 。
  2. 创建一个新项目。
  3. 右键单击该项目。
  4. 单击属性。
  5. 单击C/C 。
  6. 单击一般。
  7. 选择其他包含库。
  8. 包括库目的地。例如c:boost_1_57_0
  9. 单击预编译器标题。
  10. 单击创建/使用预编译的标头。
  11. 选择不使用预编译标头。

然后转到链接库,您遇到了问题。

  1. 转到提取的文件为 c:boost_1_57_0
  2. 单击booststrap.bat(不要打扰在命令窗口上输入,只需等待,不要关闭我遇到的问题的窗口,我遇到了我两个星期的解决方案。过了一段时间后,booststrap将运行并产生同一文件,但现在有两个不同的名称:b2bjam
  3. 单击b2并等待运行。
  4. 单击bjam并等待它运行。然后,文件夹将被制成称为stage
  5. 右键单击该项目。
  6. 单击属性。
  7. 单击链接器。
  8. 单击一般。
  9. 单击包括其他库目录。
  10. 选择图书馆的一部分,例如c:boost_1_57_0stagelib

您很好!编译器将搜索标题文件。

您需要告诉链接器在哪里寻找要链接到的库。要访问此设置,请右键单击解决方案Explorer 窗口中的项目名称,然后属性→链接器→常规→其他Library Directories 。在此处输入<boost_path>stagelib(如果使用默认选项构建增强功能,这是库位置的路径)。

又是另一个解决方案:

我很难过,因为我在我的链接 ->其他依赖项属性中包括boost_regex-vc120-mt-gd-1_58.lib.lib(注意lib前缀)。我没有指定libboost_regex-vc120-mt-gd-1_58.lib。

我试图使用(并已构建)Boost动态库(.dll),但没有定义BOOST_ALL_DYN_LINK宏。显然,编译中有一些提示要包含一个库,没有boost_all_dyn_link,它会寻找静态库(带有lib前缀),而不是动态库(没有lib prefix)。

我也有同样的问题。这是因为我使用Visual C 2010(V100)编制了增强作用,因此我试图错误地将库与Visual Studio 2012(V110)一起使用。

所以,我更改了配置(在Visual Studio 2012中)到 project属性 -> -> enstry -> -> -> -> plataform toolset ,然后更改来自 Visual Studio 2012(V110) to Visual Studio 2010(V100)。。有同样的问题,我的错误是我已经安装了binary boost_1_55_0-msvc11.0-32.exe,可与Visual C 2010一起使用,该版本V100版本(Project Properties-> configuratioperties-> configuratioperties-> eneral-> general-> Platform-Tooset)不是V110)Visual C 2012。因此,我将BOOST_1_1_5_0-MSVC-10.0.0-32.EXE下载,现在一切都还好。

我在尝试使用 boost单元测试 in Visual Studio 2015 (社区版)时也有类似的问题

致命错误lnk1104:libboost_unit_test_framework-vc140-mt-1_57

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

您可以通过两种方式创建一个Boost单元测试项目(此解决方案都适用于两种方法):

  1. 使用Boost单元测试适配器
  2. 或通过创建WIN32控制台应用程序(此处的步骤),并用Boost单元测试功能替换主函数(此处步骤)。

这是我遵循的步骤,以使两个项目都可以使用:

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

  1. bootstrap.bat
  2. " C: Program Files(X86) Microsoft Visual Studio 14.0 VC VC VCVARSALL.BAT"
  3. bjam - -clean
  4. bjam -j4 -debug-symbols = on - build-type =完整的toolset = msvc-14.0螺纹=多运行时link = sharoned地址模型= 32

其中 msvc-14.0 指定我们需要Visual Studio 2015版本(VS 2015 = v14.0 = V140),地址>地址model = 32 指定我们的需要平台32(但可以在64位进行同样的操作)。

拥有二进制文件后,请前往Visual Studio,选择您创建的Boost单元测试项目。转到 Project Properties>配置(来自主菜单),然后做出以下选择:

  • 将" 常规>平台工具集"设置为Visual Studio 2015(V140)。

  • 包括通往Boost文件夹的路径(例如C: BOOST_1_57_0)和包含二进制文件的子文件夹的路径(例如C: boost_1_57_0 stage stage agepe lib)在:

    • " C C >附加include Directory "
    • 和" 链接器>附加库目录"。

如果您在构建Boost或不愿意这样做时遇到困难,替代方案是从SourceForge下载LIB文件。该链接将带您进入Zipped Lib和DLL文件的文件夹,以获得1.51版。但是,您应该能够编辑链接以指定选择版本。显然,来自BoostPro的安装程序有一些问题。

b2 -j%cores%toolset =%msvcver%address model = 64架构= x86 link = static = static螺纹=多运行时link =共享-build-type =最小阶段-StageDir = stage/x64

属性→链接器→常规→其他库目录$(boost) stage x64 lib

如果您使用的是Visual Studio,您是否尝试过使用Tools/Nuget尝试软件包管理器要安装boost_program_options-vcxxx?这是安装Boost的简便方法。

我在此处报告了相同的问题。我解决了将Maintest.cpp从子文件夹SRC/Maintest/移动到主文件夹SRC/的问题我想这也是你的问题。

2>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc120-mt-sgd-1_55.lib

就我而言,在旧的继承项目上没有Bootstrap/BJAM(预先编译并致力于SCM)。库在其文件名中没有VC或Boost版本控制,例如libboost_regex-mt-sgd.lib,但是Processed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib是自动触发的。

通过手动将非反复的文件名添加到:

来修复
<AdditionalDependencies>$(DK_BOOST)lib64libboost_regex-mt-sgd.lib</AdditionalDependencies>

中的 ...vc120-mt-sgd-1_55.lib列入黑名单
<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>

i在我的Visual Studio 2012上有类似的错误,增压1.60:致命错误lnk1104:无法打开文件'libboost_filesystem-vc110-mt-vc110-mt-gd-gd-1_60.lib'

我通过下载Boost Binaries解决了这个问题:

  • 从https://sourceforge.net/projects/boost/files/files/boost-binaries/下载boost二进制。例如:https://master.dl.sourceforge.net/project/boost/boost/boost-binaries/1.60.0/boost_1_60_60_0-msvc-11.0-32.exe?viasf = 1

  • 将文件保存在目录中。例如C: boost_1_60_0

  • 运行下载的EXE文件

  • 在Visual Studio中,修改附加包括该项目的目录,以包括Boost目录。例如C: boost_1_60_0

  • 在Visual Studio中,修改项目的其他库目录以包括LIB目录。例如C: boost_1_60_0 lib32-msvc-11.0