web-dev-qa-db-fra.com

Rendements de construction statiques Qt5 Échec de chargement du plug-in de plate-forme "Windows"

J'écris une application Qt sous Windows à l'aide de Visual Studio 2012 . À l’aide du complément Qt et d’une construction statique distribution de Qt 5.0.2 ..__ construite sur mesure, je rencontre l’erreur redoutée "Failed to load platform plugin windows" chaque fois que j’exécute l’application. J'ai ajouté ce qui suit à l'entrée de l'éditeur de liens:

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

Au début, je pensais que je devrais peut-être ajouter "qwindowsd.lib" à cette liste également, mais cela ne résout pas le problème. Que dois-je faire pour que mon application s'exécute?

31
Dave

Je l'ai résolu. Grâce à ceci j'ai pu tout faire fonctionner. J'ai ajouté les bibliothèques suivantes:

opengl32.lib
Qt5PlatformSupport.lib
qwindows.lib

J'ai également ajouté ce qui suit à mon code:

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

Pour la construction dynamique uniquement: Assurez-vous de déplacer le fichier qwindows.dll dans le répertoire suivant:

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

Notez que le répertoire des plugins est manquant! Vous mettez tous les dossiers nécessaires de QT_BASE /.../ plugins/* directement avec vos fichiers binaires . BTW: Je n'ai pas besoin de libEGL.dll, mais mon application n'a presque pas d'interface graphique.

Ma source: http://qt-project.org/forums/viewthread/27056/#122588

26
adler

J'ai eu la même erreur avec la version MinGW de Qt (non statique): "Impossible de charger les fenêtres du plugin de plate-forme".

La solution pour moi a été d’ajouter les DLL libEGL.dll et libEGLd.dll.

12
dagur

Ok j'ai eu le même problème.

J'ai découvert que QT 5.2+ avait windeployq.exe 

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

Utilisez-le avec le répertoire de votre projet (où se trouve le fichier .exe de votre application). Et voilà! Tout lié automatiquement et prêt à être déployé!

Il obtiendra automatiquement les DLL, plugins, etc.

6
Kursion

Vous pouvez également créer une variable d'environnement:

QT_QPA_PLATFORM_PLUGIN_PATH=<QT_BASE>\plugins\platforms

qui dans mon cas devient: QT_QPA_PLATFORM_PLUGIN_PATH=f:\Qt\5\5.4\msvc2013_opengl\plugins\platforms

Évitant ainsi d'installer/copier qwindows.dll pendant le développement (pour économiser de l'espace disque!?).

Cette solution a également été mentionnée sur GitHub et ici .

EDIT: Désolé, ce n'est pas efficace dans une construction statique. Mais je vais laisser mon A ici.

6
G.Vanem

Une alternative consiste à copier le répertoire qtbase/plugins/platforms dans les répertoires Debug/Release en laissant juste qwindowsd.dll ou qwindows.dll selon le cas.

5
darrenp

Si vous utilisez anaconda et python pour créer une interface graphique avec qt designer, accédez à anaconda, pkgs, qt.xxx, bibliothèque, plugins, puis copiez le dossier plates-formes dans votre dossier de construction contenant votre programme.exe

1
Zerizer hichem

Je exactement ce problème. La solution consiste à vérifier la sortie Qt dans Debug. Cette fenêtre vous indique toutes les DLL qu’elle charge. Ce sont ceux dont vous pouvez avoir besoin dans votre dossier de distribution exe.

0
user2793449

J'ai eu la même erreur avec VS2015 et la version de Qt 5.9.3

J'ai résolu l'erreur en remplaçant Qt5Cored.dll et Qt5Core.dll (où se trouve l'exe de mon application) par les mêmes DLL du répertoire Qt

0
Jum