【问题标题】:error LNK2038: mismatch detected for '_MSC_VER': value '1900' doesn't match value '1600'错误 LNK2038:检测到“_MSC_VER”不匹配:值“1900”与值“1600”不匹配
【发布时间】:2021-12-23 12:31:36
【问题描述】:

我曾尝试将使用 vc14 编译的静态库用于使用 vc10 编译的项目中。
我收到此错误:错误 LNK2038:检测到“_MSC_VER”不匹配:值“1900”与值“1600”不匹配。
我知道:静态库必须使用相同的编译器版本构建

除了用 vc14 重新编译我的项目之外,还有什么办法可以解决这个问题吗?
有什么建议吗?

【问题讨论】:

  • “我知道:静态库必须使用相同的编译器版本构建” 所以你自己回答了你的问题?除了重新编译完整的代码之外别无他法,应该是静态链接的。
  • 我认为他们希望有一些替代解决方案,但是尝试将不兼容的编译器生成的二进制文件与不兼容的标准库实现链接起来不会有好的结果。
  • 用 VC10 重新编译库是否算作替代方案?
  • @JaMiT 不幸的是该库是外部的,vc10 中没有版本
  • @πάνταῥεῖ 库是外部的,vc10 中没有版本,我正在寻找另一个替代解决方案:(

标签: c++ visual-studio static-linking


【解决方案1】:

使用静态库的一个原则是“向下兼容”,但是由于VS默认开启/GL,如果不关闭,会导致编译后的静态库兼容性大大降低。为了保证lib文件的兼容性,建议尝试在静态库项目中关闭/GL。详情请参考document

【讨论】:

    猜你喜欢
    • 2018-05-05
    • 2013-11-03
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2016-06-24
    相关资源
    最近更新 更多