编译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
,如下图所示:
我发现这是由于在调试模式下可用但在发布模式下不可用的符号。所以我在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:LIBCMT
on等链接器命令行。我认为你应该使用后者而不是前者适用于你的情况。)
有关哪些库和定义应该结合在一起的信息,请参阅this article from MSDN。
以上是关于编译QT错误的主要内容,如果未能解决你的问题,请参考以下文章
错误记录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 降级 )(代码片段