Qt 5.1.1: Application n'a pas pu démarrer en raison plate-forme de plugin “windows” est manquant
Edit:
Quelques personnes ont commencé à marquer ma question comme un doublon. Ne pas oublier que de nombreuses questions similaires existaient quand j'ai demandé à celui-ci (voir, par exemple, la liste ci-dessous). Cependant, aucune de ces réponses résolu mon problème. Après une longue recherche, j'ai trouvé un commentaire qui avait été ignoré par tous les utilisateurs de pointage de l'absence d'une lib. Maintenant, plusieurs mois plus tard, le commentaire a été modifié pour la réponse. Cependant, lorsque j'ai répondu à cette question par msyself je destinées à aider d'autres personnes en leur fournissant directement la solution. Cela ne doit pas être oublié et jusqu'à présent, ma réponse a aidé beaucoup de gens. Donc, ma question est certainement pas un doublon. Par la voie: La accepté de réponse dans le lien fourni sur le dessus ne résout pas le problème!
Oui, j'ai utilisé la recherche:
Le déploiement de Qt C++ de l'Application à partir de Visual Studio qwindows.dll erreur
Cependant, dans mon cas, le problème persiste toujours. Je suis à l'aide de Qt 5.1.1 avec Visual Studio 2012 et développé mon Application sur Windows 7 avec Qt Creator 2.8.1. L'Application est compilée dans "Libération"de la mode et peut être exécuté que si a directement commencé avec Qt Creator.
Cependant, lors du démarrage de la "libération"-Dossier, je reçois le message suivant:
Cette application n'a pas pu démarrer, car il ne pouvait pas trouver ou charger la
Qt plate-forme de plugin "windows". La plate-forme de plugins sont:
minimes, à l'écran, windows.
Structure de dossier ressemble à ceci:
release
+ gui.exe
+ icudt51.dll
+ icuin51.dll
+ icuuc51.dll
+ libGLESv2.dll
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Widgets.dll
+ platforms
Plates-formes est directement le dossier copié à partir de Qt\Qt5.1.1\5.1.1\msvc2012\plugins\plates-formes y compris par exemple qwindows.dll. N'a pas d'importance si je le renommer en "plate-forme", comme certains autres utilisateurs n'. Qt est toujours pas trouver la "plate-forme de plugin windows", où est mon erreur?
- J'ai eu le même problème. Windows 8.1 Qt 5.3.1 MinGW 32, la liaison dynamique. Résolu par copier DLL de Qt du dossier ../MyApp/platforms/qwindows.dll. Remarque: il n'y a pas de "plugins" dans le chemin d'accès dir
- Double Possible de Qt5 l'accumulation d'électricité Statique rendements Échec du chargement de plate-forme de plugin "windows"
- Dors des problèmes similaires, veuillez utiliser l'outil
Depends
, qui va vous montrer DLL dépendances et des problèmes qui en découlent. Vous pouvez utiliser cet outil pour l'analyse statique d'un exe ou un fichier dll, mais également l'utiliser pour montrer le démarrage d'une application avec chargement dynamique des Dll.
Vous devez vous connecter pour publier un commentaire.
Bon, comme affiché ici https://stackoverflow.com/a/17271172/1458552 sans beaucoup d'attention par les autres utilisateurs:
La libEGL.dll manquait! Même si cela n'a pas été signalé lors de la tentative de démarrage de l'application (tous les autres *.dll, telles que Qt5Gui.dll avaient été signalés).
J'ai créé un répertoire des plates-formes à côté de mon exe emplacement et de mettre qwindows.dll à l'intérieur, mais j'ai encore reçu la "Échec du chargement de plate-forme de plugin "windows". Les plates-formes disponibles sont les suivants: windows d'erreur".
J'avais copié qwindows.dll à partir de C:\Qt\Qt5.1.1\Tools\QtCreator\bin\plugins\platforms qui n'est pas le bon endroit. J'ai regardé le journal de débogage de s'exécuter dans Qt Creator et constaté que mon application était à la recherche dans C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\platforms quand il a couru dans le débogueur.
Quand je l'ai copié à partir de C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\platforms, tout a bien fonctionné.
La libération est susceptible de manquer une bibliothèque/plugin ou de la bibliothèque est dans le mauvais répertoire, et ou de le mauvais répertoire.
Créer un dossier nommé "plates-formes" dans le même répertoire que votre application.exe fichier. Copiez et collez le qwindows.dll, disponible dans le dossier /bin de n'importe quel compilateur que vous avez utilisé pour libérer votre application, dans les "plates-formes" le dossier. Comme par magie ça fonctionne. Si l' .dll n'est pas de la case plugins/plates-formes/( avec plugins/être dans le même répertoire que bin/) : PfunnyGuy commentaire.
Il semble comme un problème commun est que le .dll a été prise à partir du compilateur bin. Assurez-vous de copier le votre qwindows.dll de la même compilateur que celui utilisé pour la version de votre application.
Qt est livré avec plate-forme des applications console qui va ajouter toutes les dépendances (y compris comme qwindows.dll et libEGL.dll) dans le dossier de votre déploiement de l'exécutable. L'application pour windows est appelé windeployqt
Réglage de la
QT_QPA_PLATFORM_PLUGIN_PATH
variable d'environnement %QTDIR%\plugins\plateformes\ a fonctionné pour moi.Il a également été mentionné ici et ici.
Je suis tombé sur cette et aucune des réponses que j'ai pu trouver, il fixe pour moi.
Mon colleauge a Qt (5.6.0) installés sur sa machine lors de:
C:\Qt\Qt5.6.0\5.6\msvc2015\plugins
J'ai Qt (5.6.2) installé dans le même emplacement.
J'ai appris de ce post: http://www.tripleboot.org/?p=536, que l'Qt5Core.dll a un emplacement pour les plugins écrits lors de Qt est installé en premier.
Depuis mon collègue et mon Qt répertoires ont été la même, mais différente de la version de Qt ont été installés, un autre qwindows.dll fichier est nécessaire. Quand j'ai couru un exe déployé par lui, elle serait d'utiliser mon C:\Qt\Qt5.6.0\5.6\msvc2015\plugins\platforms\qwindows.dll fichier au lieu de l'un situé à côté de l'exécutable dans le .\les plates-formes sous-dossier.
Pour contourner ce problème, j'ai ajouté la ligne suivante de code de l'application qui semble pour le forcer à regarder à côté de l'exe pour les "plateformes" sous-dossier avant qu'il regarde le chemin d'accès dans le Qt5Core.dll.
J'ai ajouté la ligne ci-dessus pour la méthode main avant de la QApplication appeler comme ceci:
qwindowsd.dll
dans les "plateformes" répertoire si vous arrive d'être dans une situation telle que vous partagez les versions de débogage avec vos collègues...créer dir
platforms
et copieqwindows.dll
à elle,platforms
etapp.exe
sont dans le même dircd app_dir
mkdir platforms
xcopy qwindows.dll platforms\qwindows.dll
Structure de dossier
+ app.exe
+ platforms\qwindows.dll
qwindows.dll
dans le répertoireplatforms
. Je post parce que j'ai fixé. Tu fais un test avant de downvote?J'ai trouvé une autre solution. Créer qt.conf dans le dossier app en tant que tel:
Puis copiez le dossier plugins dans le dossier app et cela fonctionne pour moi.
La plupart de ces réponses contiennent des bon (correct) info, mais dans mon cas, il y a toujours quelque chose qui manque.
Mon application est construite comme une bibliothèque (dll) et appelé par un non-application Qt. J'ai utilisé
windeployqt.exe
pour configurer l'intervalle Qt dll, plates-formes, plugins, etc. dans le répertoire d'installation, mais il ne pouvait toujours pas trouver la plate-forme. Après quelques essais, j'ai réalisé à la demande du répertoire de travail a été mis dans un dossier différent. Donc, j'ai attrapé le répertoire dans lequel la dll "vécu" à l'aide deGetModuleHandleExA
et a ajouté que le répertoire de la bibliothèque Qt chemin d'accès lors de l'exécution à l'aide deCela a fonctionné pour moi.
J'ai eu ce problème pendant l'utilisation de QT 5.6, Anaconda 4.3.23, python 3.5.2 et pyinstaller 3.3.
J'avais créé un programme en python avec une interface mise au point à l'aide de QTcreator, mais il a dû déployer vers d'autres ordinateurs, j'avais donc besoin de faire un exécutable, à l'aide de pyinstaller.
J'ai trouvé que le problème a été résolu sur mon ordinateur si je définis les variables d'environnement suivantes:
Mais cette solution n'a travaillé que sur mon PC qui avait conda et qt installé dans ces dossiers.
Pour résoudre ce et faire le travail exécutable sur n'importe quel ordinateur, j'ai dû modifier l' ".spec" (fichier généré par pyinstaller) pour inclure la ligne suivante:
Cette solution est basée sur les réponses de Jim G. et CrippledTable
J'ai eu le même problème et résolu par l'application de plusieurs choses.
La première, si c'est un programme que vous l'avez fait avec Qt.
Dans le dossier (dans mon cas) de "C: \ Qt \ Qt5.10.0 \ 5.10.0 \ msvc2017_64 \ plugins" vous trouvez d'autres dossiers, l'un d'eux est "plates-formes". Que les "plates-formes" dossier va être copié à côté de votre .exe exécutable. Maintenant, si vous obtenez le message d'erreur 0xc000007d est que vous n'avez pas de copie de la version qui a été, car il peut être 32bits ou 64.
Si vous continuez avec les erreurs, c'est que vous n'avez pas plus de bibliothèques. Avec le "Dependency Walker" programme vous pouvez détecter un certain nombre de dossiers manquants. Ça sera sûrement pour vous indiquer que vous avez besoin d'une NVIDIA .dll, et il vous indique l'emplacement.
D'une autre manière, au lieu d'utiliser "Dependency Walker" est de copier tous les .dll à partir de votre "C: \ Windows \ System32" le dossier à côté de votre fichier exécutable. Exécuter votre .exe et si tout se charge bien, de sorte que vous n'avez pas l'espace occupé dans les bibliothèques dll que vous n'avez pas besoin ou de l'utilisation, de l'utilisation de l' .programme exe avec toutes vos options et sans la fermer .exe que vous faire est d'effacer toutes les .dll que vous venez de copier à côté de l' .exe, donc, si celles-ci .dll sont utilisés par votre programme, le système ne vous permettra pas de les effacer, et seulement en supprimant ceux qui ne sont pas nécessaires.
J'espère que cette solution vous sert.
N'oubliez pas que si votre système d'exploitation 64 bits, les bibliothèques seront dans le dossier System32, et si votre système d'exploitation est en 32 bits, ils seront également dans le dossier System32. Cela se produit de sorte qu'il n'y a pas de problèmes de compatibilité avec les programmes 32 bits dans un ordinateur 64 bits.
Le dossier SysWOW64 contient les fichiers 32 bits comme une sauvegarde.
Pour une MinGW plate-forme et si vous compilez une cible de Débogage par une main de CMakeLists.txt écrit ad hoc, vous devez ajouter l'qwindows.dll à la plate-forme dir ainsi.
Le windeployqt exécutable fait bien son travail, mais il semble que, pour une raison étrange, le CMake construire les besoins de la publication de la variante en tant que bien.
En résumé, il sera préférable d'avoir à la fois la qwindows.dll et qwindowsd.dll dans votre répertoire de plateforme.
Je n'ai pas remarqué le même résultat étrange lors de l'importation de la CMake projet dans QtCreator, puis en exécutant la procédure de construction.
La compilation en ligne de commande le CMake projet semble déclencher l'qwindows.dll la dépendance soit, si le bon pour la cible de Débogage est mis en place (qwindowsd.dll)
Utiliser ce fichier de commandes: RunWithQt.chauve-souris
RunWithQt gui.exe
à partir de la ligne de commandeSi vous avez Anaconda installé, je vous conseille de le désinstaller et d'essayer de l'installer python package à partir d'une source, j'ai résolu ce problème de cette façon
L'application qtbase/bin/windeployqt.exe se déploie automatiquement votre application. Si vous démarrez une invite de commandes avec envirenmentvariables réglée correctement, il se déploie sur le répertoire courant.
Vous trouvez un exemple de script:
Permet de dire, vous voulez avoir quelques CGAL-Demos portable. Donc, si vous voulez avoir un dossier "CGAL", et en cela, 1 sous-dossier appelé "lib": tous (commune de) soutien-dll pour tous les programmes dans le CGAL-dossier, cliquez ici. Dans notre exemple, ce serait le Dll Télécharger: il suffit de décompresser dans le "lib". Le plus vous vous faites défiler vers le bas sur la démos-page, le plus impressionnant, le contenu. Dans mon cas, le polyèdre-démo semblait sur le droit. Si cela fonctionne sur mon 10+ yo ordinateur portable, je suis impressionné. J'ai donc créé un dossier "demo" dans le "CGAL"-répertoire, aux côtés de "lib".
Maintenant, créez une .cmd-fichier dans ce dossier. J'ai nommé le mien "Polyèdre.cmd". Nous avons donc une structure de répertoire comme ceci:
Dans ce petit exemple, "Polyèdre.cmd" contient le texte suivant:
Tous les scripts peuvent être les mêmes à part la dernière ligne, évidemment. Le seul inconvénient est: le "DOS" Fenêtre reste ouverte aussi longtemps que vous utilisez le programme. Fermer la coquille de la fenêtre, et vous tuer à la *.exe ainsi. Où que vous copiez le "CGAL"-dossier, comme l'étrange "%~dp0"-agiter représente le chemin d'accès complet à l' *.cmd fichier que nous avons commencé, avec des "\". Donc, "%me%lib" est toujours le chemin d'accès complet à la bibliothèque réelle ("CGAL\lib" dans mon cas). Les 2 lignes indiquent l'intervalle Qt où son "exécution" des fichiers sont. Ce sera au moins le fichier "qwindows.dll" pour Windows-Qt programmes de plus un nombre de *.les dll. Si je me souviens bien, la Dll de bibliothèque (au moins quand je l'ai téléchargé) a eu un petit "bug" car il contient les "plates-formes"-répertoire avec qwindows.dll en elle. Ainsi, lorsque vous ouvrez le répertoire lib, vous devez créer un dossier "plugins" à côté de "plates-formes", et puis déplacer dans "plugins". Si un allongement de l'application, tout Qt-app, ne trouve pas "qwindows.dll" il ne peut pas trouver "windows". Et il l'attend dans un répertoire nommé "plates-formes" dans les "plugins" du répertoire, qu'il a pour se faire dire par le système d'exploitation de son fonctionnement...et si le "QT_PLUGIN_PATH" n'est pas exactement vers toutes les helper dll dont vous avez besoin, certains Qt-programmes continuent de fonctionner sans probs. Et certains se plaignent de manque *.dll que vous n'avez jamais jamais entendu parler de...
Pour moi la solution a été de corriger les
PATH
variable. Il avait Anaconda3\Library\bin comme l'un des premiers chemins. Ce répertoire contient certains bibliothèques Qt, mais pas tous. Apparemment, c'est un problème. Le déplacement C:\Programs\Qt\5.12.3\msvc2017_64\bin à l'avant dePATH
résolu le problème pour moi.