0

我正在尝试构建 VS 2010 开发的 c++ 代码

我可以编译它,但是在链接期间,我收到了这个错误:

Error   1   error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in myfile.obj  

我知道这是因为它们是使用不同版本的 MSVC 构建的,但是有什么方法可以将 MSVC 配置为使用使用旧版本 MSVC 编译的库?

编辑 1

最后,我决定安装 VS2012 express 并用它编译代码。微软似乎不喜欢你将一个项目从一个版本的 MSVC 轻松移植到另一个版本。

4

2 回答 2

1

你有三个解决方案来解决这个问题:

  • 在 2012 年重新编译 VS2010 库(但您需要源代码)。或者如果已经有一个可用的 2012 库(但我猜你已经检查过了)。
  • 或者你可以这样做:

    在项目属性中,选择常规,然后将“平台工具集”设置更改为“Visual Studio 2010 (v100)”。

  • 或者您可以将您的图书馆链接为外部。

于 2013-07-09T14:09:26.850 回答
1

MSVC 静态库在主要版本之间是二进制不兼容的(至少那些使用 Microsoft 的 STL 实现的):

C++ 标准库实现故意破坏了 Visual Studio 版本(2005、2008、2010、2012)之间的二进制兼容性。(来源

您可以:

  • 使用相同的编译器重新编译外部库
  • 将您的代码移动到与外部库使用相同的编译器
  • 动态链接外部库 (.dll)
于 2013-07-09T14:11:46.233 回答