Edit: Certaines personnes ont commencé à marquer ma question comme un doublon. N'oubliez pas que de nombreuses questions similaires existaient lorsque j'ai posé celle-ci (voir par exemple la liste ci-dessous). Cependant, aucune de ces réponses n'a résolu mon problème . Après une longue recherche, j'ai trouvé un commentaire qui avait été ignoré par tous les utilisateurs indiquant la bibliothèque manquante. Maintenant, plusieurs mois plus tard, le commentaire a été changé en réponse. Cependant, lorsque j'ai répondu à cette question par msyself, j'avais l'intention d'aider d'autres personnes en fournissant directement la solution. Cela ne doit pas être oublié et jusqu'à présent, ma réponse a aidé beaucoup de gens. Par conséquent, ma question n'est certainement pas un double. À propos: la réponse acceptée dans le lien fourni en haut ne résout pas le problème !
Oui, j'ai utilisé la recherche:
Échec du chargement du plug-in de plate-forme "Windows". Les plates-formes disponibles sont: Erreur
Erreur de déploiement de l'application Qt C ++ à partir de Visual Studio qwindows.dll
Cependant, dans mon cas, le problème persiste. J'utilise Qt 5.1.1 avec Visual Studio 2012 et j'ai développé mon application sur Windows 7 avec Qt Creator 2.8.1. L'application est compilée en mode "Release" et peut être exécutée si elle est directement démarrée avec Qt Creator.
Cependant, au démarrage du dossier "release", j'obtiens le message suivant:
Cette application n'a pas pu démarrer car elle n'a pas pu trouver ou charger le plugin de la plateforme Qt "windows". Les plugins de plate-forme disponibles sont: minimal, hors écran, windows.
La structure des dossiers ressemble à ceci:
release
+ gui.exe
+ icudt51.dll
+ icuin51.dll
+ icuuc51.dll
+ libGLESv2.dll
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Widgets.dll
+ platforms
Platforms est le dossier directement copié à partir de Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ plugins \ plates-formes, y compris par exemple qwindows.dll. Peu importe si je le renomme en «plate-forme» comme l'ont fait certains autres utilisateurs. Qt ne trouve toujours pas les "fenêtres du plugin de plate-forme", où est mon erreur?
la source
Depends
, qui vous montrera les dépendances DLL et les problèmes qui en résultent. Vous pouvez utiliser cet outil pour l'analyse statique d'un fichier exe ou dll, mais également l'utiliser pour montrer le démarrage d'une application avec des DLL chargées dynamiquement.Réponses:
D'accord, comme publié ici https://stackoverflow.com/a/17271172/1458552 sans trop d'attention de la part des autres utilisateurs:
Le 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 fichiers * .dll tels que Qt5Gui.dll ont été signalés).
la source
J'ai créé un répertoire de plates-formes à côté de mon emplacement exe et j'ai mis qwindows.dll à l'intérieur, mais j'ai toujours reçu l'erreur "Échec du chargement du plugin de plate-forme" windows ". Les plates-formes disponibles sont: windows".
J'avais copié qwindows.dll de C: \ Qt \ Qt5.1.1 \ Tools \ QtCreator \ bin \ plugins \ plates-formes, ce qui n'est pas le bon emplacement. J'ai regardé le journal de débogage de l'exécution dans Qt Creator et j'ai trouvé que mon application recherchait dans C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ plates-formes lorsqu'elle s'exécutait dans le débogueur.
Lorsque j'ai copié à partir de C: \ Qt \ Qt5.1.1 \ 5.1.1 \ mingw48_32 \ plugins \ plates-formes, tout fonctionnait bien.
la source
La version ne contient probablement pas de bibliothèque / plugin ou la bibliothèque est dans le mauvais répertoire et / ou dans le mauvais répertoire.
Réponse prévue de Qt: Utilisez windeployqt . voir le dernier paragraphe pour l'explication
Réponse manuelle:
Créez un dossier nommé «plates-formes» dans le même répertoire que votre fichier application.exe. Copiez et collez le qwindows.dll, qui se trouve dans le / bin du compilateur utilisé pour publier votre application, dans le dossier «plates-formes». Comme par magie, ça marche. Si le .dll n'est pas là, vérifiez plugins / plates-formes / (avec plugins / étant dans le même répertoire que bin /) <- Commentaire de PfunnyGuy.
Il semble qu'un problème courant soit que le fichier .dll ait été extrait du mauvais bac du compilateur. Assurez-vous de copier votre qwindows.dll à partir du même compilateur que celui utilisé pour publier votre application.
Qt est livré avec des applications de console de plate-forme qui ajouteront toutes les dépendances (y compris celles comme qwindows.dll et libEGL.dll) dans le dossier de votre exécutable déployé. C'est la manière prévue de déployer votre application, de sorte que vous ne manquez aucune bibliothèque (ce qui est le principal problème avec toutes ces réponses). L'application pour Windows s'appelle windeployqt . Il existe probablement une application de console de déploiement pour chaque système d'exploitation.
la source
Définir la
QT_QPA_PLATFORM_PLUGIN_PATH
variable d'environnement sur% QTDIR% \ plugins \ plates-formes \ a fonctionné pour moi .Il a également été mentionné ici et ici .
la source
Je suis tombé sur ceci et aucune des réponses que j'ai pu trouver ne l'a corrigé pour moi.
Mon collègue a installé Qt (5.6.0) sur sa machine à: C: \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ plugins
J'ai installé Qt (5.6.2) au même endroit.
J'ai appris de ce post: http://www.tripleboot.org/?p=536 , que Qt5Core.dll a un emplacement pour les plugins écrits lors de la première installation de Qt. Étant donné que les répertoires de mon collègue et de mon Qt étaient les mêmes, mais qu'une version différente de Qt a été installée, un fichier qwindows.dll différent est nécessaire. Lorsque j'ai exécuté un exe déployé par lui, il utilisait mon fichier C: \ Qt \ Qt5.6.0 \ 5.6 \ msvc2015 \ plugins \ plates-formes \ qwindows.dll au lieu de celui situé à côté de l'exécutable dans le sous-dossier. \ Plates-formes.
Pour contourner cela, j'ai ajouté la ligne de code suivante à l'application qui semble la forcer à chercher à côté de l'exe le sous-dossier `` plates-formes '' avant de regarder le chemin dans le Qt5Core.dll.
J'ai ajouté la ligne ci-dessus à la méthode principale avant l'appel de QApplication comme ceci:
la source
qwindowsd.dll
du répertoire `platform` si vous vous trouvez dans une situation telle que vous partagez des builds de débogage avec vos collègues ...créez un répertoire
platforms
et copiez-qwindows.dll
y,platforms
etapp.exe
sont dans le même répertoirecd app_dir mkdir platforms xcopy qwindows.dll platforms\qwindows.dll
Structure des dossiers
+ app.exe + platforms\qwindows.dll
la source
qwindows.dll
dans l'annuaireplatforms
. Je poste ceci parce que je l'ai corrigé. Faites-vous un test avant de voter contre?J'ai trouvé une autre solution. Créez qt.conf dans le dossier de l'application en tant que tel:
Et puis copiez le dossier des plugins dans le dossier de l'application et cela fonctionne pour moi.
la source
La plupart de ces réponses contiennent de bonnes informations (correctes), mais dans mon cas, il manquait encore quelque chose.
Mon application est construite en tant que bibliothèque (dll) et appelée par une application non-Qt. J'avais l'habitude
windeployqt.exe
de configurer les dll, les plates-formes, les plugins, etc. Qt dans le répertoire d'installation, mais je ne trouvais toujours pas la plate-forme. Après quelques expérimentations, j'ai réalisé que le répertoire de travail de l'application était défini sur un dossier différent. J'ai donc récupéré le répertoire dans lequel la dll "vivait" en utilisantGetModuleHandleExA
et ajouté ce répertoire au chemin de la bibliothèque Qt au moment de l'exécution en utilisantCela a fonctionné pour moi.
la source
Pour moi, la solution était de corriger la
PATH
variable. Il avait Anaconda3 \ Library \ bin comme l'un des premiers chemins. Ce répertoire contient quelques bibliothèques Qt, mais pas toutes. Apparemment, c'est un problème. Déplacer C: \ Programs \ Qt \ 5.12.3 \ msvc2017_64 \ bin à l'avant de aPATH
résolu le problème pour moi.la source
J'ai eu ce problème en utilisant QT 5.6, Anaconda 4.3.23, python 3.5.2 et pyinstaller 3.3. J'avais créé un programme python avec une interface développée à l'aide de QTcreator, mais j'ai dû le déployer sur d'autres ordinateurs, donc j'avais besoin de créer un exécutable, en utilisant pyinstaller.
J'ai constaté que le problème était résolu sur mon ordinateur si je définissais les variables d'environnement suivantes:
Mais cette solution ne fonctionnait que sur mon PC sur lequel conda et qt étaient installés dans ces dossiers.
Pour résoudre ce problème et faire fonctionner l'exécutable sur n'importe quel ordinateur, j'ai dû modifier le ".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
la source
J'ai eu le même problème et je l'ai résolu en appliquant plusieurs choses. Le premier, s'il s'agit d'un programme que vous 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". Ce dossier «plates-formes» va être copié à côté de votre exécutable .exe. Maintenant, si vous obtenez l'erreur 0xc000007d, c'est que vous n'avez pas copié la version qui était, car elle peut être 32 bits ou 64.
Si vous continuez avec les erreurs, c'est qu'il vous manque plus de bibliothèques. Avec le programme "Dependency Walker", vous pouvez détecter certains des dossiers manquants. Cela vous indiquera sûrement que vous avez besoin d'un fichier .dll NVIDIA et vous indiquera l'emplacement.
Une autre façon, au lieu d'utiliser "Dependency Walker", consiste à copier tous les fichiers .dll de votre dossier "C: \ Windows \ System32" à côté de votre fichier exécutable. Exécutez votre .exe et si tout se charge bien, donc vous n'avez pas d'espace occupé dans les bibliothèques dll dont vous n'avez pas besoin ou que vous n'utilisez pas, utilisez le programme .exe avec toutes vos options et sans fermer le .exe que vous faites est d'effacer tous les fichiers. dll que vous venez de copier à côté du .exe, donc si ces .dll sont utilisés par votre programme, le système ne vous laissera pas effacer, supprimant uniquement 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 est 64 bits, les bibliothèques seront dans le dossier System32 et si votre système d'exploitation est 32 bits, elles seront également dans le dossier System32. Cela se produit afin qu'il n'y ait aucun problème de compatibilité avec les programmes 32 bits dans un ordinateur 64 bits. Le dossier SysWOW64 contient les fichiers 32 bits en tant que sauvegarde.
la source
Pour une plate-forme MinGW et si vous compilez une cible de débogage par un CMakeLists.txt écrit ad hoc, vous devez également ajouter le qwindows.dll au répertoire de la plate-forme. L'exécutable windeployqt fait bien son travail, mais il semble que pour une raison étrange, la version CMake ait également besoin de la variante de publication. En résumé, il sera préférable d'avoir à la fois qwindows.dll et qwindowsd.dll dans le répertoire de votre plateforme. Je n'ai pas remarqué le même résultat étrange lors de l'importation du projet CMake dans QtCreator et lors de l'exécution de la procédure de construction. Compiler sur la ligne de commande le projet CMake semble déclencher la dépendance qwindows.dll soit si la bonne pour la cible de débogage est définie (qwindowsd.dll)
la source
Utilisez ce fichier de commandes: RunWithQt.bat
RunWithQt gui.exe
depuis la ligne de commandela source
Si Anaconda est installé, je vous recommande de le désinstaller et d'essayer d'installer le package python à partir de la source, j'ai résolu ce problème de cette manière
la source
L'application qtbase / bin / windeployqt.exe déploie automatiquement votre application. Si vous démarrez une invite avec des variables d'environnement définies correctement, elle se déploie dans le répertoire actuel. Vous trouvez un exemple de script:
la source
Disons que vous vouliez avoir des démos CGAL portables. Donc, vous auriez un dossier "CGAL", et dans celui-ci, 1 sous-dossier appelé "lib": tous les support-dll (communs) pour tous les programmes dans le dossier CGAL vont ici. Dans notre exemple, ce serait le Dll-Download : décompressez simplement dans le répertoire "lib". Plus vous faites défiler la page de démonstration , plus le contenu est impressionnant. Dans mon cas, la démo du polyèdre semblait à peu près correcte. Si cela fonctionne sur mon ordinateur portable de 10 ans et plus, je suis impressionné. J'ai donc créé un dossier "demo" dans le répertoire "CGAL", à côté de "lib". Créez maintenant un fichier .cmd dans ce dossier. J'ai nommé le mien "Polyhedron.cmd". Nous avons donc une structure de répertoires comme celle-ci:
Dans ce petit exemple, "Polyhedron.cmd" contient le texte suivant:
Tous les scripts peuvent être identiques à l'exception de la dernière ligne, évidemment. La seule mise en garde est la suivante: la "fenêtre DOS" reste ouverte aussi longtemps que vous utilisez le programme actuel. Fermez la fenêtre shell et vous supprimez également le * .exe. Partout où vous copiez le dossier "CGAL", comme l'étrange "% ~ dp0" -wriggle représente le chemin complet vers le fichier * .cmd que nous avons commencé, avec "\" à la fin. Donc "% me% lib" est toujours le chemin complet vers la bibliothèque réelle ("CGAL \ lib" dans mon cas). Les 2 lignes suivantes indiquent à Qt où se trouvent ses fichiers "d'exécution". Ce sera au moins le fichier "qwindows.dll" pour les programmes Windows-Qt plus un nombre quelconque de * .dll. Si je me souviens bien, la bibliothèque Dll (au moins quand je l'ai téléchargée) avait un petit "bug" car elle contient le répertoire "plates-formes" avec qwindows.dll dedans.passez aux "plugins". Si une Qt-app, une Qt-app, ne trouve pas "qwindows.dll", elle ne trouve pas "windows". Et il l'attend dans un répertoire nommé "plates-formes" dans le répertoire "plugins", sur lequel il doit se faire dire par le système d'exploitation sur lequel il s'exécute ... et si "QT_PLUGIN_PATH" ne pointe pas exactement vers toutes les DLL d'aide que vous besoin, certains programmes Qt fonctionneront toujours sans problème. Et certains se plaignent de l'absence de fichiers * .dll dont vous n'avez jamais entendu parler ...
la source
Pour toute personne venant de la version 5.14.0 de QT, il m'a fallu 2 jours pour trouver cette déclaration de bogue:
https://wiki.qt.io/Qt_5.14.0_Known_Issues
Soyez donc conscient. L'utilisation de windeployqt withMinGW donnera la même erreur que celle indiquée ici.
la source