【问题标题】:error LNK1104: cannot open file 'libboost_thread-vc100-mt-gd-1_42.lib' in VS 2012 Update 4错误 LNK1104:无法在 VS 2012 Update 4 中打开文件“libboost_thread-vc100-mt-gd-1_42.lib”
【发布时间】:2016-06-28 04:57:20
【问题描述】:

我正在尝试在 VS2012 Update 4 中构建代码。我在 VS2012 中需要它,因为我包含了一个存在于 VC11 及更高版本中的 thread.h 文件。因此 dll 配置为使用 VS 2012 (v110) 平台工具集。而不是寻找 vc110 版本的 boost 文件 VS 正在寻找版本 vc100 的 lib 文件。当我链接到那些 vc100 lib 文件时,它仍然给出以下错误。我已经完成了清理和重建,但仍然出现此错误。


错误 LNK2038:检测到“_MSC_VER”不匹配:值“1600”与 client.obj 中的值“1700”不匹配


甚至使用了 vc110 boost 文件。

工具集:

库:

错误:

我应该改变什么来让这个构建没有错误?

提前感谢您的帮助。

【问题讨论】:

  • 你必须重建一切,包括你链接的静态库。
  • 我没有包含在项目中的其他 lib/dll。我已经做了一个干净的解决方案并重建了一切。我什至重新创建了整个项目。它仍然要求'libboost_thread-vc100-mt-gd-1_42.lib'。我的平台工具集是 v110。

标签: c++ visual-studio visual-studio-2012 boost


【解决方案1】:

您需要将 VC110 boost 库链接到您的应用程序。将 boost 库转换为 VS2012(VC110)

【讨论】:

  • 但最初的错误信息是在寻找 vc100?
  • 我已经看到了。里面有2条错误信息。第一个声明它正在寻找文件“libboost_filesystem-vc100-mt-gd-1_51.lib”,这意味着它需要使用 VS2010 构建的 boost lib,如 vc100 所述。在第二条错误消息“值 1700 与 1600 不匹配”中,我相信 1600 用于 vc100。但在我的情况下,错误消息表明它正在寻找 vc100 并且我已经提供了它。如果我错了,请纠正我。我自己试图理解为什么会出现不匹配。错误不应该说明它正在寻找lib文件版本vc110而不是vc100吗?
  • 能否请将您的项目上传到 google drive 或 Dropbox,以便我们查看您的问题。
  • 我已经恢复使用 VS2010 并在 boost 中使用了线程头。所以一切都很好。
【解决方案2】:

为 VS2010 构建的 Boost 库不能与 VS2012 一起使用。如果你已经为 VS2012 构建了 boost 库,你可以在你的项目中指定这个库的路径:properties->Configuration->Linker->General。还要从properties->Configuration->C/C++->General 更改包含目录路径。否则你将不得不为 VS2012 构建库并使用它。

还要确保 properties->Configuration properties->VC++ Directories 中的 boost 库路径是正确的。

【讨论】:

  • 我已经构建了 boost 并将其包含在项目中。但是错误消息表明它正在寻找为 vc100 构建的库。
  • 你是否使用 VS2012 构建了 boost?你确定吗?你有没有检查你的链接器路径
  • 仅供参考,我已经添加了我添加到项目中的 lib 文件的屏幕截图。你以前用过boost吗?
  • 能否查看属性->配置属性->VC++目录中设置的路径。
  • 我已恢复使用 VC100。
猜你喜欢
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2011-01-17
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 2014-11-01
相关资源
最近更新 更多