【问题标题】:C++ OGRE3D VS2013: Error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1800'C++ OGRE3D VS2013:错误 LNK2038:检测到“_MSC_VER”不匹配:值“1700”与值“1800”不匹配
【发布时间】:2014-11-25 12:28:48
【问题描述】:

我开始玩 OGRE 并下载了它。我使用 MS Visual Studio 2013 Express。我看到没有适用于 VS2013 的 SDK,所以我下载了 VS2012 的 SDK。然后我下载了Tutorial Framework,像this一样设置项目并尝试编译它。

但是,它没有链接。它给出了一个错误“LNK1104:无法打开文件'libboost_thread-vc120-mt-gd-1_55.lib'”。我试图从 SO 中找到解决方案,我找到了one 并对其进行了测试。我更改了复制所有libboost_*-vc110-mt-gd-1_55.libs,将它们粘贴到同一目录并将它们重命名为libboost_*-vc120-mt-gd-1_55.lib

这解决了第一个问题,但它给出了另一个问题,即我现在要问的问题。我知道这意味着我正在使用在错误版本的 MSVC 中编译的库文件。我找不到真正的libboost_*-vc120-mt-gd-1_55.lib

有什么建议吗?

【问题讨论】:

  • Visual Studio C++ 编译的二进制文件不能跨版本链接,因为它们依赖于特定版本的运行时。 C ABI 保持不变,但依赖 C++ 的东西此时没有稳定的 ABI。

标签: c++ boost visual-studio-2013 linker ogre


【解决方案1】:

正如错误消息所述,您使用的是不兼容的二进制版本。您不能简单地混合使用(无论是 boost 库还是 Ogre 二进制文件)。

为 boost 下载正确的二进制文件应该会有所帮助:Boost pre-built VS2013

然而,在 Windows 上 Ogre 最灵活和最简单的选择是简单地自己编译 Ogre。如果不需要,您甚至可以禁用通过 CMake 完全增强集成。

【讨论】:

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