致命错误LNK1104:无法打开文件'libboost_system-vc110-mt-gd-1_51.lib'
fatal error LNK1104: cannot open file 'libboost_system-vc110-mt-gd-1_51.lib'
似乎我无法使它起作用。我制作了一个简单的控制台应用程序(取决于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
。
- 打开视觉C 。
- 创建一个新项目。
- 右键单击该项目。
- 单击属性。
- 单击C/C 。
- 单击一般。
- 选择其他包含库。
- 包括库目的地。例如
c:boost_1_57_0
。 - 单击预编译器标题。
- 单击创建/使用预编译的标头。
- 选择不使用预编译标头。
然后转到链接库,您遇到了问题。
- 转到提取的文件为
c:boost_1_57_0
。 - 单击
booststrap.bat
(不要打扰在命令窗口上输入,只需等待,不要关闭我遇到的问题的窗口,我遇到了我两个星期的解决方案。过了一段时间后,booststrap
将运行并产生同一文件,但现在有两个不同的名称:b2
和bjam
。 - 单击
b2
并等待运行。 - 单击
bjam
并等待它运行。然后,文件夹将被制成称为stage
。 - 右键单击该项目。
- 单击属性。
- 单击链接器。
- 单击一般。
- 单击包括其他库目录。
- 选择图书馆的一部分,例如
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单元测试项目(此解决方案都适用于两种方法):
- 使用Boost单元测试适配器
- 或通过创建WIN32控制台应用程序(此处的步骤),并用Boost单元测试功能替换主函数(此处步骤)。
这是我遵循的步骤,以使两个项目都可以使用:
首先,下载所需的Boost版本(例如,BOOST_1_57_0)。您可以使用正确的二进制文件(使用MSVC V140编译)下载Boost,也可以通过从命令行中运行以下命令来自己提取二进制文件:
- bootstrap.bat
- " C: Program Files(X86) Microsoft Visual Studio 14.0 VC VC VCVARSALL.BAT"
- bjam - -clean
- 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
- 如何在c++中使用system()来运行包含空格的python脚本
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- C++/CLI System.AccessViolation在托管类中调用非托管函数时出现异常
- 来自 Android 应用程序内部的 boost 类型的 boost::wrapexcept<boost::system::system_error> 的未捕获异常
- 程序在使用 system() 启动另一个可执行文件时停止
- 为什么我的 DeviceInformation 对象没有 System.Devices.InterfaceClassGuid 属性?
- 为什么"using System;"不被视为不良做法?
- C++ 合并字符串以'system'函数错误
- 在Linux Mint上使用多个版本的libboost
- System.AccessViolationException:shared_ptr C# .NET 和 C++ 应用程
- 将 Vcl::Controls::TCaption aka (System::UnicodeString) 转换为 co
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- Python os.system() 返回错误值
- 使用 system() 函数在C++程序中运行 cmd 命令
- 如何使用 C/C++ 和 system() 系统调用以外的其他方法在 Linux 中获取文件功能?
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- system() 无法运行我的程序,因为空间
- How to recover system gcc compiler on centos 6
- 如何使用 c++ libboost 运行进程并获取其输出?
- 导出 c++ 函数并使用 c# System.AccessViolationException 中的函数