致命错误LNK1104:无法打开文件'libboost_system-vc110-mt-gd-1_51.lib'
似乎我无法得到这个工作。 我做了一个简单的控制台应用程序(这取决于websocket++
库)需要Boost
库..但是当我尝试编译我得到:
致命错误LNK1104:无法打开文件'libboost_system-vc110-mt-gd-1_51.lib'
但是,我做了在(boost_root)/stage/libs
创buildlib的bjam,并且将path链接到了C++/Additionnals includes
的编译器。
如果我查看(boost_root)/stage/libs
文件libboost_system-vc110-mt-gd-1_51.lib
不存在。 它被称为libboost_system-vc110-mt-sgd-1_51.lib
。
任何想法?
C ++→General→Additional Include Directories参数用于列出编译器将search头文件的目录。
您需要告诉链接器在哪里查找链接到的库。 要访问此设置,请右键单击解决scheme资源pipe理器窗口中的项目名称,然后单击属性→链接器→常规→附加库目录 。 在此input<boost_path>\stage\lib
(如果使用默认选项构buildBoost ,则这是库所在的path)。
对于像我这样自学C ++的业余爱好者来说,这是最简单的方法:
首先将boost库解压到你select的任何目录。 我推荐c:\directory
。
- 打开你的visual C ++。
- 创build一个新的项目。
- 右键点击该项目。
- 点击属性。
- 点击C / C ++。
- 点击一般。
- select其他包含库。
- 包括图书馆的目的地。 例如
c:\boost_1_57_0
。 - 点击预编译头。
- 点击创build/使用预编译头。
- select不使用预编译头。
然后转到链接库,你遇到了你的问题。
- 去解压缩的文件是
c:\boost_1_57_0
。 - 点击
booststrap.bat
(不要打扰在命令窗口input等待,不要closures窗口,这是我的问题,我花了两个星期解决的地方,一段时间后booststrap
将运行,并产生同一个文件,但现在有两个不同的名字:b2
和bjam
。 - 点击
b2
并等待它运行。 - 点击
bjam
并等待它运行。 然后一个文件夹将被生成称为stage
。 - 右键点击该项目。
- 点击属性。
- 点击链接器。
- 点击一般。
- 点击包含额外的库目录。
- select库的一部分,例如
c:\boost_1_57_0\stage\lib
。
你很好走!
我有同样的问题。 这是因为我用Visual C ++ 2010(v100)编译了Boost,而我试图错误地使用Visual Studio 2012(v110)的库。
所以,我改变了configuration(在Visual Studio 2012中)到项目属性 – > 常规 – > Plataform工具集 ,并将Visual Studio 2012(v110)中的值更改为Visual Studio 2010(v100) 。
我有同样的问题,我的错误是,我已经安装了二进制boost_1_55_0-msvc-11.0-32.exe使用Visual C ++ 2010的版本V100(项目属性 – >configuration属性 – >通用 – > platformTooset)而不是v110作为visual c ++ 2012.所以我dowloaded boost_1_55_0-msvc-10.0-32.exe,现在一切都很好。
如果您在构buildboost时遇到困难或者不想这样做,另一种方法是从SourceForge下载lib文件。 链接将带你到1.51版本的压缩的lib和dll文件的文件夹。 但是,您应该可以编辑链接来指定select的版本。 显然,BoostPro的安装程序有一些问题。
又一个解决scheme:
我被难住了,因为我包括boost_regex-vc120-mt-gd-1_58.lib在我的Link-> Additional Dependencies属性中,但是链接一直告诉我它无法打开libboost_regex-vc120-mt-gd-1_58.lib注意lib前缀)。 我没有指定libboost_regex-vc120-mt-gd-1_58.lib。
我正在尝试使用(并build立)boostdynamic库(.dlls),但没有定义BOOST_ALL_DYN_LINKmacros。 显然,编译时提示包含一个库,如果没有BOOST_ALL_DYN_LINK,它将查找静态库(带有lib前缀),而不是dynamic库(没有lib前缀)。
在Visual Studio 2015 (Community Edition)中尝试使用boostunit testing时遇到了类似的问题:
致命错误LNK1104:libboost_unit_test_framework-vc140-mt-1_57
所以我想我会分享我的解决scheme。
您可以使用两种方式创build一个增强unit testing项目(此解决scheme适用于两种方法):
- 使用升压unit testing适配器
- 或者通过创build一个Win32控制台应用程序( 这里的步骤 ),并用升压unit testingfunction代替主function( 这里的步骤 )。
以下是我为了使这两个项目正常工作而遵循的步骤:
首先,下载所需的升级版本(例如, boost_1_57_0 )。 你可以使用正确的二进制文件(使用msvc v140进行编译)下载boost文件,或者通过从命令行运行以下命令来自行提取二进制文件:
- bootstrap.bat
- “C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat”x86
- bjam – 清洁
- bjam -j4 –debug-symbols = on –build-type =完整工具集= msvc-14.0 threading = multi-link-= shared-model = 32
其中msvc-14.0指定我们需要Visual Studio 2015版本(VS 2015 = v14.0 = v140),而address-model = 32指定我们需要平台32(但对于64位也可以做到这一点)。
一旦你有了二进制文件,进入Visual Studio,select你创build的Boostunit testing项目。 转到项目属性>configuration (从主菜单),并作出以下select:
-
将“ 常规”>“平台工具集 ”设置为Visual Studio 2015(v140)。
-
包括boost文件夹的path(例如C:\ boost_1_57_0)和包含二进制文件(例如C:\ boost_1_57_0 \ stage \ lib)的子文件夹的path:
- “ C \ C ++>其他包含目录 ”
- 和“ 链接器>其他库目录 ”。
我在这里报告了同样的问题。 我解决了将mainTest.cpp从子文件夹src / mainTest /移动到主文件夹src的问题/我想这也是你的问题。