Unsolved Building Qt 5.8 Beta with -no-opengl on Windows 10 / VS2015 Update 3 fails
-
As I understand, Qt 5.8 will provide better support for working without OpenGL. I am currently trying to build the Beta without opengl support to test out what works and what doesn't. My hope is that we'll be able to utilize QtWebEngine now without OpenGL support. Our (Windows) customers cannot be expected to have any OpenGL drivers, and we had also problems using ANGLE in past tests. So a pure software solution (even if slow) would be preferable for broad support and stability.
Unfortunately, the compilation of Qt itself fails due to a linker error when buildinng the screnegraph plugin for Direct3D12.
link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /DLL /SUBSYSTEM:WINDOWS /VERSION:5.8 /OUT:D:\Qt\5.8.0beta\qtbase\plugins\scenegraph\qsgd3d12backendd.dll @C:\Users\Daniel\AppData\Local\Temp\nm9A8C.tmp Bibliothek "D:\Qt\5.8.0beta\qtbase\plugins\scenegraph\qsgd3d12backendd.lib" und Objekt "D:\Qt\5.8.0beta\qtbase\plugins\scenegraph\qsgd3d12backendd.exp" werden erstellt. qsgd3d12publicnodes.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static void __cdecl QSGDefaultNinePatchNode::rebuildGeometry(class QSGTexture *,class QSGGeometry *,class QVector4D const &,class QRectF const &,double)" (__imp_?rebuildGeometry@QSGDefaultNinePatchNode@@SAXPEAVQSGTexture@@PEAVQSGGeometry@@AEBVQVector4D@@AEBVQRectF@@N@Z)" in Funktion ""public: virtual void __cdecl QSGD3D12NinePatchNode::update(void)" (?update@QSGD3D12NinePatchNode@@UEAAXXZ)". qsgd3d12publicnodes.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static void __cdecl QSGDefaultImageNode::rebuildGeometry(class QSGGeometry *,class QSGTexture *,class QRectF const &,class QRectF,class QFlags<enum QSGImageNode::TextureCoordinatesTransformFlag>)" (__imp_?rebuildGeometry@QSGDefaultImageNode@@SAXPEAVQSGGeometry@@PEAVQSGTexture@@AEBVQRectF@@V4@V?$QFlags@W4TextureCoordinatesTransformFlag@QSGImageNode@@@@@Z)" in Funktion ""public: virtual void __cdecl QSGD3D12ImageNode::setRect(class QRectF const &)" (?setRect@QSGD3D12ImageNode@@UEAAXAEBVQRectF@@@Z)". D:\Qt\5.8.0beta\qtbase\plugins\scenegraph\qsgd3d12backendd.dll : fatal error LNK1120: 2 nicht aufgelöste Externe NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.EXE"": Rückgabe-Code "0x460" Stop. NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"": Rückgabe-Code "0x2" Stop. NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2" Stop. NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2" Stop. NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2" Stop. NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2" Stop. NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2" Stop.
(Unfortunately my Visual Studio was installed as German version, meaning it translates the error messages, but it's a case of unresolved symbols leading to a linker error that halts compilation).
I conigured Qt with:
configure -commercial -nomake tests -nomake examples -confirm-license -force-debug-info -separate-debug-info -no-opengl
Without
-no-opengl
, the compilation was succesful.Since I don't think I'll need a DirectD12 backend for the scenegraph, I was looking for a way to disable, but I could not find a configure option to do so. I was able to manual modify the scenegraph.pro so the DirectD12 backend plugin would not be created. But even when I did that, the compilation failed at another step, this time the QtWinExtras qml plugin.
link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /DLL /SUBSYSTEM:WINDOWS /VERSION:5.8 /OUT:D:\Qt\5.8.0beta\qtbase\qml\QtWinExtras\qml_winextrasd.dll @C:\Users\Daniel\AppData\Local\Temp\nm55F7.tmp Bibliothek "D:\Qt\5.8.0beta\qtbase\qml\QtWinExtras\qml_winextrasd.lib" und Objekt "D:\Qt\5.8.0beta\qtbase\qml\QtWinExtras\qml_winextrasd.exp" werden erstellt. qquickiconloader.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp_GetSystemMetrics" in Funktion ""private: static class QVariant __cdecl QQuickIconLoader::loadFromImageProvider(class QUrl const &,class QQmlEngine const *,enum QVariant::Type,class QSize)" (?loadFromImageProvider@QQuickIconLoader@@CA?AVQVariant@@AEBVQUrl@@PEBVQQmlEngine@@W4Type@2@VQSize@@@Z)". D:\Qt\5.8.0beta\qtbase\qml\QtWinExtras\qml_winextrasd.dll : fatal error LNK1120: 1 nicht aufgelöste Externe NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.EXE"": Rückgabe-Code "0x460" Stop. NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"": Rückgabe-Code "0x2" Stop. NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2" Stop. NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2" Stop. NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2" Stop. NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2" Stop.
Any ideas what could be wrong? Is this is a known issue, or something that should be reported?
-
I contacted support about this issue. There is currently no known workaround. Bug Report: https://bugreports.qt.io/browse/QTBUG-57185