QT statisch linken (unresolved symbol) [gelöst!]
Verfasst: 09.05.2017, 12:23
Hallo,
ich möchte ein QT-Programm statisch linken in Microsoft Visual C++ 64Bit. Dazu habe ich mir die QT-Bibliothek kompiliert. Die dynamische Version habe ich getestet und sie funkltioniert:
Der Webkit-Parameter war wahrscheinlich wirkungslos. Zum ausführen brauchte ich die Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll und im Ordner Platforms die qwindows.dll
Danach dann die statische Variante, aber mit danymischer runtime library, weil ich nicht alle Probleme auf einmal haben wollte:
Wenn ich jetzt ein Programm übersetze und starte, bekomme ich den Fehler:
Danach bekomme ich aber einen Linkerfehler:
Oder sollte ich mich dafür mal in einem QT-Forum registrieren? Die IRC-Channel sind auf alle Fälle nicht mehr hilfreich :/
Edit: http://www.qtforum.de/viewtopic.php?f=1&t=18386 (Edit: Hab den Beitrag mal gelöscht, was sollen die schon besseres schreiben :) )
Mal schauen, was da rauskommt :) Registriert seit 13 Minuten ^^
GELÖST
Wenn ich so darüber nachdenke, habe ich wahrscheinlich die Funktion aus dem Einsprungspunkt nicht richtig kopiert, sonst hätte Google das ja auch finden müssen.
ich möchte ein QT-Programm statisch linken in Microsoft Visual C++ 64Bit. Dazu habe ich mir die QT-Bibliothek kompiliert. Die dynamische Version habe ich getestet und sie funkltioniert:
Code: Alles auswählen
configure -prefix /testqt5.8dyn -opengl desktop -no-openssl -opensource -confirm-license -skip webkit -release
Danach dann die statische Variante, aber mit danymischer runtime library, weil ich nicht alle Probleme auf einmal haben wollte:
Code: Alles auswählen
configure -prefix /testqt5.8dynRT -static -opengl desktop -no-openssl -opensource -confirm-license -skip qtwebkit -release
Natürlich habe ich gesucht und gefunden, dass ich für statische Applikationen das hier brauche:This application failed to start because it could not find or load the QT platform plugin "windows" in "".
Reinstalling the application may fix this problem
Code: Alles auswählen
#include <QtPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
Dabei habe ich schon fast alle .libraries verlinkt:1>------ Erstellen gestartet: Projekt: QtGui1Back5Static, Konfiguration: ReleaseStatic x64 ------
1> main.cpp
1> Bibliothek "C:\Users\Name\Dropbox\C++Projects2017\QtGui1Back5Static\x64\ReleaseStatic\QtGui1Back5Static.lib" und Objekt "C:\Users\Name\Dropbox\C++Projects2017\QtGui1Back5Static\x64\ReleaseStatic\QtGui1Back5Static.exp" werden erstellt.
1>qwindows.lib(qwindowswindow.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp_DwmEnableBlurBehindWindow" in Funktion ""bool __cdecl applyBlurBehindWindow(struct HWND__ *)" (?applyBlurBehindWindow@@YA_NPEAUHWND__@@@Z)".
1>qwindows.lib(qwindowswindow.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp_DwmIsCompositionEnabled" in Funktion ""bool __cdecl applyBlurBehindWindow(struct HWND__ *)" (?applyBlurBehindWindow@@YA_NPEAUHWND__@@@Z)".
1>C:\Users\Name\Dropbox\C++Projects2017\QtGui1Back5Static\x64\ReleaseStatic\\QtGui1Back5Static.exe : fatal error LNK1120: 2 nicht aufgelöste Externe
========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========
Im Internet (hier)finde ich immer etwas von einer "Qt5PlatformSupport.lib". Die finde ich bei mir nicht. Und die Qt5PlatformCompositorSupport.lib scheint nicht zu helfen.msvcrt.lib;clip2tri.lib;clipper.lib;imm32.lib;opengl32.lib;poly2tri.lib;qdirect2d.lib;qminimal.lib;qoffscreen.lib;qtpcre.lib;qtfreetype.lib;qtharfbuzz.lib;qtlibpng.lib;qtmain.lib;qwindows.lib;UxTheme.lib;winmm.lib;Ws2_32.lib;Qt5AccessibilitySupport.lib;Qt5Charts.lib;Qt5CLucene.lib;Qt5Concurrent.lib;Qt5Core.lib;Qt5DataVisualization.lib;Qt5DBus.lib;Qt5Designer.lib;Qt5DesignerComponents.lib;Qt5DeviceDiscoverySupport.lib;Qt5EventDispatcherSupport.lib;Qt5FbSupport.lib;Qt5FontDatabaseSupport.lib;Qt5Gamepad.lib;Qt5Gui.lib;Qt5Help.lib;Qt5Location.lib;Qt5Multimedia.lib;Qt5MultimediaQuick_p.lib;Qt5MultimediaWidgets.lib;Qt5Network.lib;Qt5NetworkAuth.lib;Qt5Nfc.lib;Qt5OpenGL.lib;Qt5OpenGLExtensions.lib;Qt5PacketProtocol.lib;Qt5PlatformCompositorSupport.lib;Qt5Positioning.lib;Qt5PrintSupport.lib;Qt5Purchasing.lib;Qt5Qml.lib;Qt5QmlDebug.lib;Qt5Quick.lib;Qt5QuickControls2.lib;Qt5QuickParticles.lib;Qt5QuickTemplates2.lib;Qt5QuickTest.lib;Qt5QuickWidgets.lib;Qt5Script.lib;Qt5ScriptTools.lib;Qt5Sql.lib;Qt5Scxml.lib;Qt5SerialBus.lib;Qt5SerialPort.lib;Qt5Sensors.lib;Qt5Svg.lib;Qt5Test.lib;Qt5TextToSpeech.lib;Qt5ThemeSupport.lib;Qt5UiTools.lib;Qt5Widgets.lib;Qt5WebChannel.lib;Qt5WebSockets.lib;Qt5WinExtras.lib;Qt5Xml.lib;Qt5XmlPatterns.lib;Qt53DCore.lib;%(AdditionalDependencies)
Oder sollte ich mich dafür mal in einem QT-Forum registrieren? Die IRC-Channel sind auf alle Fälle nicht mehr hilfreich :/
Edit: http://www.qtforum.de/viewtopic.php?f=1&t=18386 (Edit: Hab den Beitrag mal gelöscht, was sollen die schon besseres schreiben :) )
Mal schauen, was da rauskommt :) Registriert seit 13 Minuten ^^
GELÖST
Danke Krishty!Krishty hat geschrieben:liegt doch in Dwmapi.lib … mal eingebunden? Windows SDK von Vista oder neuer benutzt (in alten SDK-Varianten existieren die Funktionen nicht)?
Wenn ich so darüber nachdenke, habe ich wahrscheinlich die Funktion aus dem Einsprungspunkt nicht richtig kopiert, sonst hätte Google das ja auch finden müssen.