Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.7.0 Beta
-
None
-
- Windows 10 x64,
- MinGW-W64 x86_64 5.3.0,
- Qt 5.7-dev (http://code.qt.io/cgit/qt/qt5.git/log/?h=5.7 ).
-
172f7e618e9f67bbf178f1fa8b93402a615326f8 (5.7, 26.4.2016, 5.7RC)
Description
Hi, Everyone,
Got error while building Qt using Mingw-w64:
configure -prefix "%CD%\..\GCC64r\dll" -release -opensource -c++std c++11 -shared -plugin-sql-sqlite -opengl dynamic -openvg -platform win32-g++ -iconv -qt-zlib -qt-pcre -icu -I "%CD%\..\..\libICU-57.1\GCC64r\include" -L "%CD%\..\..\libICU-57.1\GCC64r\lib" -qt-libpng -qt-libjpeg -avx -openssl -I "%CD%\..\..\libOPENSSL-1.1.0-dev\GCC64r\include" -L "%CD%\..\..\libOPENSSL-1.1.0-dev\GCC64r\lib" -dbus-runtime -confirm-license -skip qtscript && mingw32-make [or] configure -prefix "%CD%\..\GCC64r\lib" -release -opensource -c++std c++11 -static -plugin-sql-sqlite -opengl desktop -openvg -I "%CD%\..\..\libMESA-11.2-dev\GCC64r\include" -platform win32-g++ -iconv -qt-zlib -qt-pcre -icu -I "%CD%\..\..\libICU-57.1\GCC64r\include" -L "%CD%\..\..\libICU-57.1\GCC64r\lib" -qt-libpng -qt-libjpeg -avx -openssl -I "%CD%\..\..\libOPENSSL-1.1.0-dev\GCC64r\include" -L "%CD%\..\..\libOPENSSL-1.1.0-dev\GCC64r\lib" -dbus-runtime -confirm-license -skip qtscript && mingw32-make [snip] mingw32-make[6]: Entering directory 'c:/libQT-5.7-dev/src/qtbase/src/plugins/platforms/windows' g++ -c -pipe -fno-keep-inline-dllexport -O3 -std=c++11 -fno-exceptions -frtti -Wall -Wextra -Wvla -Wdate-time -DUNICODE -DWIN32 -DQT_NO_CAST_FROM_ASCII -DQT_USE_DIRECTWRITE2 -DQT_NO_FONTCONFIG -DLIBEGL_NAME=libEGL -DLIBGLESV2_NAME=libGLESv2 -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_STATICPLUGIN -DQT_PLUGIN -DQT_PLATFORMSUPPORT_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -Ic:\libMESA-11.2-dev\GCC64r\include -Ic:\libICU-57.1\GCC64r\include -Ic:\libOPENSSL-1.1.0-dev\GCC64r\include -I. -I..\..\..\3rdparty\wintab -I..\..\..\3rdparty\freetype\include -I..\..\..\..\include -I..\..\..\..\include\QtPlatformSupport -I..\..\..\..\include\QtPlatformSupport\5.7.0 -I..\..\..\..\include\QtPlatformSupport\5.7.0\QtPlatformSupport -I..\..\..\..\include\QtGui\5.7.0 -I..\..\..\..\include\QtGui\5.7.0\QtGui -I..\..\..\..\include\QtGui -I..\..\..\..\include\QtCore\5.7.0 -I..\..\..\..\include\QtCore\5.7.0\QtCore -I..\..\..\..\include\QtCore -I.moc\release -I..\..\..\..\mkspecs\win32-g++ -o .obj\release\qwindowsfontenginedirectwrite.o qwindowsfontenginedirectwrite.cpp qwindowsfontenginedirectwrite.cpp: In member function 'QImage QWindowsFontEngineDirectWrite::imageForGlyph(glyph_t, QFixed, int, const QTransform&)': qwindowsfontenginedirectwrite.cpp:581:22: error: 'DWRITE_E_NOCOLOR' was not declared in this scope HRESULT hr = DWRITE_E_NOCOLOR; ^ Makefile.Release:1556: recipe for target '.obj/release/qwindowsfontenginedirectwrite.o' failed mingw32-make[6]: *** [.obj/release/qwindowsfontenginedirectwrite.o] Error 1 mingw32-make[6]: Leaving directory 'c:/libQT-5.7-dev/src/qtbase/src/plugins/platforms/windows' Makefile:34: recipe for target 'release' failed mingw32-make[5]: *** [release] Error 2 mingw32-make[5]: Leaving directory 'c:/libQT-5.7-dev/src/qtbase/src/plugins/platforms/windows' Makefile:90: recipe for target 'sub-windows-make_first' failed mingw32-make[4]: *** [sub-windows-make_first] Error 2 mingw32-make[4]: Leaving directory 'c:/libQT-5.7-dev/src/qtbase/src/plugins/platforms' Makefile:95: recipe for target 'sub-platforms-make_first' failed mingw32-make[3]: *** [sub-platforms-make_first] Error 2 mingw32-make[3]: Leaving directory 'c:/libQT-5.7-dev/src/qtbase/src/plugins' Makefile:741: recipe for target 'sub-plugins-make_first' failed mingw32-make[2]: *** [sub-plugins-make_first] Error 2 mingw32-make[2]: Leaving directory 'c:/libQT-5.7-dev/src/qtbase/src' Makefile:41: recipe for target 'sub-src-make_first' failed mingw32-make[1]: *** [sub-src-make_first] Error 2 mingw32-make[1]: Leaving directory 'c:/libQT-5.7-dev/src/qtbase' Makefile:73: recipe for target 'module-qtbase-make_first' failed mingw32-make: *** [module-qtbase-make_first] Error 2
because Mingw-w64 winerror.h doesn't contain appropriate definition. After fixing it (using code from https://github.com/wine-mirror/wine/blob/master/include/winerror.h ), next error appeared:
mingw32-make[1]: Entering directory 'c:/libQT-5.7-dev/src/qtbase/src/plugins/platforms/windows' g++ -c -pipe -fno-keep-inline-dllexport -O3 -std=c++11 -fno-exceptions -frtti -Wall -Wextra -Wvla -Wdate-time -DUNICODE -DWIN32 -DQT_NO_CAST_FROM_ASCII -DQT_USE_DIRECTWRITE2 -DQT_NO_FONTCONFIG -DLIBEGL_NAME=libEGL -DLIBGLESV2_NAME=libGLESv2 -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_PLATFORMSUPPORT_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -Ic:\libICU-57.1\GCC64r\include -Ic:\libOPENSSL-1.1.0-dev\GCC64r\include -I. -I..\..\..\3rdparty\wintab -I..\..\..\3rdparty\freetype\include -I..\..\..\..\include -I..\..\..\..\include\QtPlatformSupport -I..\..\..\..\include\QtPlatformSupport\5.7.0 -I..\..\..\..\include\QtPlatformSupport\5.7.0\QtPlatformSupport -I..\..\..\..\include\QtGui\5.7.0 -I..\..\..\..\include\QtGui\5.7.0\QtGui -I..\..\..\..\include\QtGui -I..\..\..\..\include\QtANGLE -I..\..\..\..\include\QtCore\5.7.0 -I..\..\..\..\include\QtCore\5.7.0\QtCore -I..\..\..\..\include\QtCore -I.moc\release -I..\..\..\..\mkspecs\win32-g++ -o .obj\release\qwindowsfontdatabase.o qwindowsfontdatabase.cpp qwindowsfontdatabase.cpp: In static member function 'static QFontEngine* QWindowsFontDatabase::createEngine(const QFontDef&, int, const QSharedPointer<QWindowsFontEngineData>&)': qwindowsfontdatabase.cpp:1800:17: error: 'IDWriteFontFace2' was not declared in this scope IDWriteFontFace2 *directWriteFontFace2 = Q_NULLPTR; ^ qwindowsfontdatabase.cpp:1800:35: error: 'directWriteFontFace2' was not declared in this scope IDWriteFontFace2 *directWriteFontFace2 = Q_NULLPTR; ^ In file included from C:/ProgramData/MinGW64/x86_64-w64-mingw32/include/winbase.h:2377:0, from C:/ProgramData/MinGW64/x86_64-w64-mingw32/include/windows.h:70, from ..\..\..\..\include/QtCore/../../src/corelib/global/qt_windows.h:61, from ..\..\..\..\include/QtCore/qt_windows.h:1, from qtwindows_additional.h:44, from qwindowsfontdatabase.h:45, from qwindowsfontdatabase.cpp:40: qwindowsfontdatabase.cpp:1801:67: error: no matching function for call to '__mingw_uuidof()' if (SUCCEEDED(directWriteFontFace->QueryInterface(__uuidof(IDWriteFontFace2), ^ In file included from C:/ProgramData/MinGW64/x86_64-w64-mingw32/include/winnt.h:628:0, from C:/ProgramData/MinGW64/x86_64-w64-mingw32/include/minwindef.h:163, from C:/ProgramData/MinGW64/x86_64-w64-mingw32/include/windef.h:8, from C:/ProgramData/MinGW64/x86_64-w64-mingw32/include/windows.h:69, from ..\..\..\..\include/QtCore/../../src/corelib/global/qt_windows.h:61, from ..\..\..\..\include/QtCore/qt_windows.h:1, from qtwindows_additional.h:44, from qwindowsfontdatabase.h:45, from qwindowsfontdatabase.cpp:40: C:/ProgramData/MinGW64/x86_64-w64-mingw32/include/guiddef.h:30:48: note: candidate: template<class T> const GUID& __mingw_uuidof() __extension__ template<typename T> const GUID &__mingw_uuidof(); ^ C:/ProgramData/MinGW64/x86_64-w64-mingw32/include/guiddef.h:30:48: note: template argument deduction/substitution failed: In file included from C:/ProgramData/MinGW64/x86_64-w64-mingw32/include/winbase.h:2377:0, from C:/ProgramData/MinGW64/x86_64-w64-mingw32/include/windows.h:70, from ..\..\..\..\include/QtCore/../../src/corelib/global/qt_windows.h:61, from ..\..\..\..\include/QtCore/qt_windows.h:1, from qtwindows_additional.h:44, from qwindowsfontdatabase.h:45, from qwindowsfontdatabase.cpp:40: qwindowsfontdatabase.cpp:1801:67: error: template argument 1 is invalid if (SUCCEEDED(directWriteFontFace->QueryInterface(__uuidof(IDWriteFontFace2), ^ Makefile.Release:4139: recipe for target '.obj/release/qwindowsfontdatabase.o' failed mingw32-make[1]: *** [.obj/release/qwindowsfontdatabase.o] Error 1 mingw32-make[1]: Leaving directory 'c:/libQT-5.7-dev/src/qtbase/src/plugins/platforms/windows' Makefile:34: recipe for target 'release' failed mingw32-make: *** [release] Error 2
Reproduced for Debug+shared and Release+<shared,static> configurations.
It appeared after patch 155554 was merged to Qt-5.7 branch with recent update. Probably because some DirectWrite 2 functionality (like IDWriteFontFace2 interface) was not ported yet to Mingw-w64.
Temporary solution could be to disable automatic build of directwrite2 for Mingw-w64, until missing functionality would be implemented in it.
Or add -directwrite2 and -no-directwrite2 options to file qtbase\tools\configure\configureapp.cpp, so Mingw-w64 users could bypass this error via configuration parameters.
UPD: While -no-directwrite option disable both DirectWrite and DirectWrite 2 support, DirectWrite 2 remains marked as enabled in configure.exe output:
Configuration: ... audio-backend directwrite2 native-gestures QMAKESPEC...................win32-g++ (commandline) ... DirectWrite support.........no DirectWrite 2 support.......yes Use system proxies..........no
That's a minor flaw, but it confuses a little.
Regards,
Alexander