在 VS 2012 (C++) 中编译 Visual Studio 2010 项目:错误 LNK2038:检测到“_MSC_VER”不匹配:值“1600”与值“1700”不匹配

Posted

技术标签:

【中文标题】在 VS 2012 (C++) 中编译 Visual Studio 2010 项目:错误 LNK2038:检测到“_MSC_VER”不匹配:值“1600”与值“1700”不匹配【英文标题】:Compiling Visual Studio 2010 project in VS 2012 (C++): error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' 【发布时间】:2013-06-24 15:16:22 【问题描述】:

我收到了一个新创建的 SDK 的示例应用程序,但我无法编译它 - 由于 ATL 的原因,它在 Visual Studio Express 中根本无法编译,这似乎是唯一的版本微软仍然提供的 VS 2010。所以我试图在 VS 2012 Professional 中编译它,但它给了我错误 LNK2038。从我能收集到的信息中,例如来自this thread,问题在于尝试在 2012 版本中使用为 2010 编译的 .lib 文件。由于我不是编译 .lib 的人,而且我没有它的代码,而且 VS 2010 无法访问,所以我真的不知道该怎么做,除非原作者重新编译它。有什么建议么?我缺少一些基本的东西?非常感谢您的帮助。

【问题讨论】:

microsoft.com/en-us/download/details.aspx?id=2890 如果你有 VS2012 的有效 RTM 许可证,那么你也有使用任何以前版本 VS 的许可证。因此,请尝试在此 VS2010 试用版中输入您的许可证号。自己从未尝试过。 【参考方案1】:

库文件不能在不同版本的编译器中重复使用。您需要执行以下操作之一:

    使用用于创建库文件的相同版本的编译器编译您的项目。 从代码所有者处获取新的库文件,使用您现在使用的编译器进行编译。 获取库的源代码,并自己编译它们的新版本。 重写您拥有的代码,使其不依赖于您无法控制的库,因为您的构建环境不允许使用它们。

【讨论】:

谢谢。通过更多的搜索,我找到了Visual Studio 2010 Professional on CNet,所以你的选项1毕竟是可能的。

以上是关于在 VS 2012 (C++) 中编译 Visual Studio 2010 项目:错误 LNK2038:检测到“_MSC_VER”不匹配:值“1600”与值“1700”不匹配的主要内容,如果未能解决你的问题,请参考以下文章

安装 VS 2012 后无法编译我的 c++ 项目

VS2012 使用 C++ 编译器 2012 年 11 月 CTP (v120) 强调错误错误

VS2010:以 64 位编译 C++ 项目

编译 VS 2012 C++ 项目时出现致命错误无法运行“mt.exe”

OpenCC的编译与多语言使用

用VS2010编译的C++大作业出现了无法识别的外部符号BUG