web-dev-qa-db-de.com

Qt5 Static Build liefert Fehler beim Laden des Plattform-Plugins "Windows"

Ich schreibe eine Qt-Anwendung unter Windows mit Visual Studio 2012 . Verwenden des Qt-Add-Ins und einer benutzerdefinierten static -Distribution von Qt 5.0.2 . Ich bin auf den gefürchteten "Failed to load platform plugin windows"-Fehler gestoßen, wenn ich die Anwendung ausführen lasse haben der Linkereingabe Folgendes hinzugefügt:

imm32.lib
winmm.lib
Ws2_32.lib
qtmaind.lib
Qt5Cored.lib
Qt5Guid.lib
Qt5Widgetsd.lib

Zuerst dachte ich, dass ich vielleicht auch "qwindowsd.lib" zu dieser Liste hinzufügen sollte, aber das Problem nicht behoben wurde. Was muss ich tun, damit meine Anwendung ausgeführt werden kann?

31
Dave

Ich habe es gelöst Dank dies konnte ich alles zum Laufen bringen. Ich habe folgende Bibliotheken hinzugefügt:

opengl32.lib
Qt5PlatformSupport.lib
qwindows.lib

Ich habe auch folgendes zu meinem Code hinzugefügt:

#include <QtPlugin>
Q_IMPORT_PLUGIN (QWindowsIntegrationPlugin);
24
Dave

Nur für dynamische Erstellung: Stellen Sie sicher, dass Sie die Datei qwindows.dll in das folgende Verzeichnis verschieben:

yourapp.exe
Qt5Core.dll
...
platforms/qwindows.dll
...

Beachten Sie, dass das Plugins-Verzeichnis fehlt! Sie legen alle benötigten Ordner aus QT_BASE /.../ plugins/* direkt zusammen mit Ihren Binärdateien ab.

Meine Quelle: http://qt-project.org/forums/viewthread/27056/#122588

26
adler

Ich hatte den gleichen Fehler mit der MinGW-Version von Qt (nicht statisch): "Plattform-Plugin-Fenster konnten nicht geladen werden".

Die Lösung für mich war das Hinzufügen der DLLs libEGL.dll und libEGLd.dll.

12
dagur

Ok, ich hatte ein ähnliches Problem.

Ich habe herausgefunden, dass QT 5.2+ windeployq.exe hat 

QT_DIRECTORY\5.2 ...\bin\windeployq.exe

Verwenden Sie es mit dem Verzeichnis Ihres Projekts (wo sich die EXE-Datei Ihrer Anwendung befindet). Und voilà! Automatisch alles verknüpft und bereit zum Bereitstellen!

Es werden die DLLs, Plugins etc ... automatisch erhalten!

6
Kursion

Sie können auch eine Umgebungsvariable erstellen:

QT_QPA_PLATFORM_PLUGIN_PATH=<QT_BASE>\plugins\platforms

was in meinem Fall wird: QT_QPA_PLATFORM_PLUGIN_PATH=f:\Qt\5\5.4\msvc2013_opengl\plugins\platforms

So wird vermieden, dass qwindows.dll während der Entwicklung installiert/kopiert wird (um Speicherplatz zu sparen!.

Diese Lösung wurde auch auf GitHub und hier erwähnt.

BEARBEITEN: Sorry, dies ist in einem statischen Build nicht effektiv. Aber ich lasse mein A hier.

6
G.Vanem

Eine Alternative besteht darin, das Verzeichnis qtbase/plugins/platforms in die Verzeichnisse Debug/Release zu kopieren, wobei nur qwindowsd.dll oder qwindows.dll gedrückt wird.

5
darrenp

Wenn Sie Anaconda und Python verwenden, um eine GUI mit qt designer zu erstellen, gehen Sie zu anaconda, pkgs, qt.xxx, library, plugins und kopieren Sie den Ordner "platform" in Ihren Build-Ordner, der Ihre program.exe enthält

1
Zerizer hichem

Ich genau dieses problem. Die Lösung besteht darin, den Qt in der Debug-Ausgabe zu überprüfen. Dieses Fenster zeigt Ihnen alle DLLs an, die es lädt. Dies sind diejenigen, die Sie möglicherweise in Ihrem Distributions-Exe-Ordner benötigen.

0
user2793449

Ich hatte den gleichen Fehler mit VS2015 und der Version von Qt 5.9.3

Ich habe den Fehler behoben, indem ich die Dateien Qt5Cored.dll und Qt5Core.dll (wobei das Exe meiner Anwendung verwendet wurde) durch dieselben DLLs im Qt-Verzeichnis ersetzt

0
Jum