msvc版本中的链接器不匹配.有什么变通办法吗

linker mismatch in msvc version. Is there any workaround for it?

本文关键字:什么 不匹配 版本 链接 msvc      更新时间:2023-10-16

我正在尝试构建一个c++代码,该代码是VS 2010 开发的

我可以编译它,但在链接过程中,我得到了这个错误:

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

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

编辑1

最后,我决定安装VS2012express并用它编译代码。看起来微软不喜欢你轻易地将一个项目从一个版本的MSVC移植到另一个版本。

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

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

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

  • 或者,您可以将库链接为外部库

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

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

您可以:

  • 用同一编译器重新编译外部库
  • 将代码移动到与外部库使用的编译器相同的编译器
  • 动态链接外部库(.dll)