由于不同版本的 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 库导致链接错误的主要内容,如果未能解决你的问题,请参考以下文章