编译QT错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译QT错误相关的知识,希望对你有一定的参考价值。

我想用QT 5.9.3编译Visual Studio 2017。我在QMAKE_CFLAGS_DEBUG文件中将-Zi -MD更改为-Zi -MDd而不是C:Qt5.9.3-x86qtbasemkspecscommonmsvc-desktop.conf

但是,当我配置时

configure -debug -confirm-license -nomake examples -nomake tests -opensource -platform win32-msvc -prefix C:Qt5.9.3-x865.9.3-x86-install

然后运行nmake,我总是得到一个错误的未解析的外部符号__imp___CrtDbgReporterW,如下图所示:

Qt compiler error

我发现这是由于在调试模式下可用但在发布模式下不可用的符号。所以我在NDEBUG之后添加了一个this post-option。但没有运气。我也尝试将QMAKE_CFLAGS_DEBUG推进到-Zi -MD -D"NDEBUG"。但这也没有带来好运。

谁能给我一些关于如何解决这个问题的提示?我需要使用/MD而不是/MDd标志编译的Debug库。

---编辑---

重定向VS2017命令提示符的输出显示文件Debug2.cpp具有link命令

link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /DLL /SUBSYSTEM:WINDOWS /DEF:......3rdpartyanglesrclibGLESv2libGLESv2d.def /MANIFEST:embed /OUT:........liblibGLESv2d.dll @C:UsersuserAppDataLocalTemp
m88DB.tmp

这导致未解决的外部符号错误。

答案

您粘贴的样本有一些问题。

首先,它使用命令文件(例如,链接器命令行上的@C:UsersuserAppDataLocalTemp m88DB.tmp),因此我们仍然无法看到传递给链接器的所有命令。

其次,你为同一个cpp文件定义了NDEBUG_DEBUG(例如,第1117行)。后者的存在可能是链接器问题的原因,因为它可能会影响它自动查找CRT的方式。

这可能通过(1)获得一致的预处理器定义和(2)确保在命令行上具有默认库来解决。 (具体来说,您可能需要添加或删除/NODEFAULTLIB:MSVCRT/NODEFAULTLIB:LIBCMTon等链接器命令行。我认为你应该使用后者而不是前者适用于你的情况。)

有关哪些库和定义应该结合在一起的信息,请参阅this article from MSDN

以上是关于编译QT错误的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator在新项目中显示错误,但代码可以正常编译

错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段

错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段

在编译c++代码时出现如下错误: 望速度解答,很急。。谢谢!

在 Windows 中编译 Qt 时出现致命错误

损坏的顶点和片段着色器