由于不同版本的 MSVC 和 Qt 库导致链接错误

Posted

技术标签:

【中文标题】由于不同版本的 MSVC 和 Qt 库导致链接错误【英文标题】:Linking error because of different versions MSVC and Qt libraries 【发布时间】:2013-02-04 17:25:09 【问题描述】:

我在使用 MSVC 2012 编译器编译 Qt 项目时遇到问题。我先下载了 Qt,然后意识到我还没有合适的编译器,然后下载了 Microsoft Visual Studio Express 2012 及其 msvc 编译器。 但是,每当我尝试在 Qt Creator 中编译某些内容时,都会出现以下错误:

qtmain.lib(qtmain_win.obj):-1: LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match with value '1700' in glwidget.obj

所以我对这意味着什么的理解是,我的 Qt 库与我的 msvc 编译器的版本不同(旧)。但我不确定如何修复它,或者如何获取其他/更新的库。一些谷歌搜索告诉我,添加到 Qt .pro 文件中的以下代码应该可以解决问题:

QMAKE_COMPILER_DEFINES  += _MSC_VER=1700 WIN32

但这没有任何效果。此外,使用 '1600' 而不是 '1700' 也无济于事。有什么想法吗?

我正在使用 32 位 Windows 7 系统,如果有帮助的话,我正在使用 Qt 5.0.0。

【问题讨论】:

【参考方案1】:

您需要为 Visual Studio 2012 编译的二进制文件。由于没有可用的官方(或非官方)预编译二进制文件,您需要自己编译。

This should not be complicated process,但是对于初学者来说可能很难做到令人沮丧,所以我建议你遵循已经给出的建议并下载VS2010(毕竟,它会花费更少的时间下载并安装它而不是从源代码编译Qt)。

【讨论】:

【参考方案2】:

您必须使用 MSVC 2010,因为库是使用它构建的。试试Visual C++ 2010 Express。

【讨论】:

好吧...那么没有办法更新 Qt 的库,或者添加某种标志来使这成为可能吗? 仅使用 MSVC 2012 重建 Qt。

以上是关于由于不同版本的 MSVC 和 Qt 库导致链接错误的主要内容,如果未能解决你的问题,请参考以下文章

开发日常 | 解决SSL缺库导致https失败的问题

qt链接在lib\libqt5cored.a很慢

Qt发布错误:无法定位程序输入点于动态链接库QtCore5.dll

Qt - 经过这么多尝试后,静态链接失败了

QT程序在发布的时候应注意的地方

Qt - 经过多次尝试后静态链接失败