致命错误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

  1. 打开你的visual C ++。
  2. 创build一个新的项目。
  3. 右键点击该项目。
  4. 点击属性。
  5. 点击C / C ++。
  6. 点击一般。
  7. select其他包含库。
  8. 包括图书馆的目的地。 例如c:\boost_1_57_0
  9. 点击预编译头。
  10. 点击创build/使用预编译头。
  11. select不使用预编译头。

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

  1. 去解压缩的文件是c:\boost_1_57_0
  2. 点击booststrap.bat (不要打扰在命令窗口input等待,不要closures窗口,这是我的问题,我花了两个星期解决的地方,一段时间后booststrap将运行,并产生同一个文件,但现在有两个不同的名字: b2bjam
  3. 点击b2并等待它运行。
  4. 点击bjam并等待它运行。 然后一个文件夹将被生成称为stage
  5. 右键点击该项目。
  6. 点击属性。
  7. 点击链接器。
  8. 点击一般。
  9. 点击包含额外的库目录。
  10. 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适用于两种方法):

  1. 使用升压unit testing适配器
  2. 或者通过创build一个Win32控制台应用程序( 这里的步骤 ),并用升压unit testingfunction代替主function( 这里的步骤 )。

以下是我为了使这两个项目正常工作而遵循的步骤:

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

  1. bootstrap.bat
  2. “C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat”x86
  3. bjam – 清洁
  4. 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的问题/我想这也是你的问题。