c++ - 在 Debug模式下构建 Qt 5.10 时 MSVC 编译器崩溃

标签 c++ windows qt visual-c++ compiler-errors

使用 MSVC++ 2017 x64 编译器在 Debug模式下编译 Qt 5.10 失败。在 Release模式下,不会出现该错误。

错误本身是:

```

C:\Qt\5.10\build\qtbase\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DPCRE2_CODE_UNIT_WIDTH=16 -DPCRE2_STATIC -D_WINDLL --compiler-flavor=msvc --include .moc/debug/moc_predefs.h -IC:/Qt/5.10/qtbase/mkspecs/win32-msvc -IC:/Qt/5.10/qtbase/src/corelib -IC:/Qt/5.10/qtbase/src/3rdparty/zlib/src -IC:/Qt/5.10/build/qtbase/src/corelib/global -IC:/Qt/5.10/qtbase/src/3rdparty/harfbuzz/src -IC:/Qt/5.10/qtbase/src/3rdparty/md5 -IC:/Qt/5.10/qtbase/src/3rdparty/md4 -IC:/Qt/5.10/qtbase/src/3rdparty/sha3 -IC:/Qt/5.10/qtbase/src/3rdparty/double-conversion/include -IC:/Qt/5.10/qtbase/src/3rdparty/double-conversion/include/double-conversion -IC:/Qt/5.10/qtbase/include -IC:/Qt/5.10/qtbase/include/QtCore -IC:/Qt/5.10/build/qtbase/include -IC:/Qt/5.10/build/qtbase/include/QtCore -IC:/Qt/5.10/qtbase/include/QtCore/5.10.0 -IC:/Qt/5.10/qtbase/include/QtCore/5.10.0/QtCore -IC:/Qt/5.10/build/qtbase/include/QtCore/5.10.0 -IC:/Qt/5.10/build/qtbase/include/QtCore/5.10.0/QtCore -IC:/Qt/5.10/qtbase/src/corelib/tmp -I. -I"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" -I"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" C:\Qt\5.10\qtbase\src\corelib\mimetypes\qmimetype.h -o .moc\debug\moc_qmimetype.cpp
        rc /NOLOGO -D_DEBUG -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DPCRE2_CODE_UNIT_WIDTH=16 -DPCRE2_STATIC -D_WINDLL -fo .obj\debug\Qt5Cored_resource.res Qt5Cored_resource.rc
        cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zi -MDd -utf-8 -EHsc -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 /Fd.obj\debug\Qt5Cored.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DPCRE2_CODE_UNIT_WIDTH=16 -DPCRE2_STATIC -D_WINDLL -IC:\Qt\5.10\qtbase\src\corelib -I. -IC:\Qt\5.10\qtbase\src\3rdparty\zlib\src -Iglobal -IC:\Qt\5.10\qtbase\src\3rdparty\harfbuzz\src -IC:\Qt\5.10\qtbase\src\3rdparty\md5 -IC:\Qt\5.10\qtbase\src\3rdparty\md4 -IC:\Qt\5.10\qtbase\src\3rdparty\sha3 -IC:\Qt\5.10\qtbase\src\3rdparty\double-conversion\include -IC:\Qt\5.10\qtbase\src\3rdparty\double-conversion\include\double-conversion -IC:\Qt\5.10\qtbase\include -IC:\Qt\5.10\qtbase\include\QtCore -I..\..\include -I..\..\include\QtCore -IC:\Qt\5.10\qtbase\include\QtCore\5.10.0 -IC:\Qt\5.10\qtbase\include\QtCore\5.10.0\QtCore -I..\..\include\QtCore\5.10.0 -I..\..\include\QtCore\5.10.0\QtCore -Itmp -I.moc\debug -IC:\Qt\5.10\qtbase\src\3rdparty\pcre2\src -IC:\OpenSSL-Win64\include -IC:\Qt\5.10\qtbase\mkspecs\win32-msvc -Fo.obj\debug\ @C:\Users\ROTTER~2.PRA\AppData\Local\Temp\nmAD99.tmp
qabstractanimation.cpp
qvariantanimation.cpp
qpropertyanimation.cpp
qanimationgroup.cpp
qsequentialanimationgroup.cpp
qparallelanimationgroup.cpp
qpauseanimation.cpp
Generating Code...
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\HostX64\x64\cl.EXE"' : return code '0x1'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

```

我正在构建“nmake.exe”。使用的配置步骤是:

```

C:\Qt\5.10\configure.bat -opensource -skip qtgamepad -skip qtcharts -skip qtandroidextras -skip qtmacextras -skip qtwebengine -skip qtnetworkauth -skip qtdatavis3d -skip qtcanvas3d -skip qt3d -skip qtactiveqt -skip qtdoc -skip qtlocation -skip qtcharts -skip qtpurchasing -skip qtquickcontrols -skip qtquickcontrols2 -skip qtremoteobjects -skip qtsensors -skip qtserialbus -skip qtspeech -skip qtvirtualkeyboard -skip qtserialport -skip qtwayland -skip qtwebchannel -skip qtwebsockets -skip qtwebview -skip qtx11extras -skip qtxmlpatterns -skip qtconnectivity -skip qtdeclarative -skip qtscxml -skip qtmultimedia -nomake examples -platform win32-msvc2017 -qt-zlib -qt-libjpeg -qt-libpng -qt-xcb -qt-xkbcommon -qt-freetype -qt-pcre -qt-harfbuzz -prefix "C:\Qt\5.10\Qt" -openssl -I "C:\OpenSSL-Win64\include" -L "C:\OpenSSL-Win64\lib\VC" -nomake tests -nomake tools -dbus no -skip qttools -debug -confirm-license -no-qml-debug -shared -no-pch

```

我完全不知道哪里出了问题,因为错误输出并没有真正显示任何具体的错误消息。有什么想法吗?

最佳答案

QRandomGenerator 定义与 min macro 冲突由 MSVC 定义。查看related bug in Qt .它已经修复并在 Qt 5.10.1 中可用。

作为解决方法,您可以添加

#undef min

在包含 Qt header 之前。

关于c++ - 在 Debug模式下构建 Qt 5.10 时 MSVC 编译器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48320020/

相关文章:

python - Qt:按钮上没有边框,使其不可点击?

c# - 如何将 C++ union 类型转换为 C# 代码?

c++ - 如何编译和运行在 Windows 10 上使用 libev 的示例程序

c++ - 是否可以在头文件中重载运算符(在声明类时)?

c++ - qwtcurve 不绘制图形

qt - Qt 中的数据结构是在堆上还是在堆栈上?

c++ - 以下代码的问题是什么?

c++ - 编译器将如何优化临时对象?

windows - 如何在 Linux 中使用 POSIX 方法从文件中读取 Unicode-16 字符串?

windows - 使用 Visual Studio 集成的 WiX 托管自定义操作中没有调试信息