Qt 5.1.1: L'application n'a pas pu démarrer car le plug-in de plate-forme «windows» est manquant

124

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

échec du chargement du plugin de plate-forme "windows" Les plates-formes disponibles sont: windows, minimal

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?

Anonyme
la source
5
J'ai eu un problème similaire. Windows 8.1 Qt 5.3.1 MinGW 32, liaison dynamique. Résolu en copiant la DLL du dossier de Qt vers ../MyApp/platforms/qwindows.dll. Remarque: il n'y a pas de répertoire "plugins" dans le chemin
Dmitriy
2
Possible duplication des rendements
Jim G.
Pour des problèmes similaires, veuillez utiliser l'outil 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.
Flovdis
Utilisez windeployQt
CrippledTable

Réponses:

64

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).

Anonyme
la source
2
Dans mon cas: Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012 \ bin (bien sûr en fonction de votre version de Visual Studio)
Anonyme
8
comment saviez-vous que la DLL manquante était libEGL?
user1493046
4
VOUS M'AVEZ ÉCONOMISÉ DES HEURES! J'ai eu ce même problème sur Qt 5.3.1
tarabyte
4
@ user1493046 J'ai réussi à reproduire cela en utilisant dépend et son mode de profilage (F7). Une fois que l'application a démarré et affiché l'erreur, libEGL.dll est apparu dans la liste des dépendances.
lapis
17
L'ajout de libEGL.dll n'a pas fonctionné. Cependant, la définition de la variable d'environnement suivante a fonctionné pour moi: QT_QPA_PLATFORM_PLUGIN_PATH =% QTDIR% \ plugins \ plates-formes \
arsalank2
36

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.

Brandon
la source
38
La définition de la variable d'environnement suivante a fonctionné pour moi: QT_QPA_PLATFORM_PLUGIN_PATH =% QTDIR% \ plugins \ plates-formes \
arsalank2
24

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.

CrippledTable
la source
1
Voici ce dont j'avais besoin: Remarque, qwindows.dll n'est pas dans bin / de votre installation de plate-forme Qt, mais dans plugins / plates-formes /, avec plugins / étant dans le même répertoire que bin /
PfunnyGuy
1
Je vous remercie! En résumé, les fichiers sont: Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll et YourApp.exe dans le répertoire principal, et plates-formes \ qwindows.dll et plates-formes \ libEGL.dll dans le sous-répertoire.
Pierre
1
windeployqt est la bonne réponse. Je l'ai utilisé et il a copié tout le nécessaire à côté du .exe. Cela supprime les conjectures de savoir quelle dll est nécessaire et laquelle ne l'est pas
H. Al-Amri
14

Définir la QT_QPA_PLATFORM_PLUGIN_PATHvariable d'environnement sur% QTDIR% \ plugins \ plates-formes \ a fonctionné pour moi .

Il a également été mentionné ici et ici .

Jim G.
la source
3
Bien que cette réponse puisse le faire fonctionner sur votre machine actuelle, elle n'aide pas les autres qui essaient de déployer leurs programmes sur d'autres machines et ont besoin d'identifier spécifiquement les bibliothèques manquantes / requises.
RTbecard
1
en 2017, cela a fonctionné pour moi. Je ne déploierai aucune application!. Avec Qt creator, ouvrez simplement \ Nouveau fichier ou projet ... \ Qt Widgets Application, puis exécutez et il se bloque avec le même message. Définir ce var m'aide.
Phiber
Copiez simplement le dossier des plugins quelque part à côté de votre "distribution" improvisée et pointez-y la variable d'environnement - cela devrait fonctionner (pas besoin d'utiliser "QTDIR") :)
mlvljr
9

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.

QCoreApplication::addLibraryPath(".");

J'ai ajouté la ligne ci-dessus à la méthode principale avant l'appel de QApplication comme ceci:

int main( int argc, char *argv[] )
{
    QCoreApplication::addLibraryPath(".");
    QApplication app( argc, argv );
    ...
    return app.exec();
}
Joël
la source
1
Celui-ci a fonctionné pour moi ... mais notez que vous pourriez avoir besoin qwindowsd.dlldu répertoire `platform` si vous vous trouvez dans une situation telle que vous partagez des builds de débogage avec vos collègues ...
HostileFork dit ne pas faire confiance à SE
Celui-ci a fonctionné pour moi car la mention de qwindowsd.dll, je savais que mon application était compilée en mode débogage, et j'ai installé les bibliothèques Qtxxxd.dll mais j'utilisais qwindows.dll dans le dossier de la plate-forme.
Gustavo Rodríguez
6

créez un répertoire platforms et copiez- qwindows.dlly, platformset app.exesont dans le même répertoire

cd app_dir mkdir platforms xcopy qwindows.dll platforms\qwindows.dll

Structure des dossiers + app.exe + platforms\qwindows.dll

KunMing Xie
la source
Il est mentionné dans la question que "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."
parasietje
L'application @parasietje recherche qwindows.dlldans l'annuaire platforms. Je poste ceci parce que je l'ai corrigé. Faites-vous un test avant de voter contre?
KunMing Xie
Votre réponse ne répond pas à la question initiale. Votre réponse suggère quelque chose que l'affiche originale a déjà essayé.
parasietje
3

J'ai trouvé une autre solution. Créez qt.conf dans le dossier de l'application en tant que tel:

[Paths]
Prefix = .

Et puis copiez le dossier des plugins dans le dossier de l'application et cela fonctionne pour moi.

Peter Quiring
la source
Ok, je suis dans un environnement minGW, CMake, Qt 5.12, où l'application de l'outil windeploy n'est pas possible. Le dossier plates-formes était là, mais ne fonctionnait pas. Le remplacer par un de la Qt-lib n'a pas non plus aidé. Correction en utilisant votre astuce (après avoir copié le dossier). Je vous remercie!
Marcel Petrick
2

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.exede 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 utilisant GetModuleHandleExAet ajouté ce répertoire au chemin de la bibliothèque Qt au moment de l'exécution en utilisant

QCoreApplication::addLibraryPath(<result of GetModuleHandleExA>);

Cela a fonctionné pour moi.

Jacob Robbins
la source
2

Pour moi, la solution était de corriger la PATHvariable. 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 a PATHrésolu le problème pour moi.

Jann Poppinga
la source
1

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:

QT_QPA_PLATFORM_PLUGIN_PATH:% QTDIR% \ plugins \ plates-formes \

QTDIR: C: \ Miniconda3 \ pkgs \ qt-5.6.2-vc14_3 \ Bibliothèque

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:

datas = [('C: \ Miniconda3 \ pkgs \ qt-5.6.2-vc14_3 \ Library \ plugins \ plates-formes * .dll', 'plates-formes'),]

Cette solution est basée sur les réponses de Jim G. et CrippledTable

Loebsen Van de Graaff
la source
1

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.

Colère
la source
Cela fonctionne, mais ressemble plus à une solution temporaire. Est-il possible de faire quelque chose pour ne pas avoir besoin de copier le dossier des plates-formes?
Oleg Yablokov le
0

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)

Michal Turlik
la source
0

Utilisez ce fichier de commandes: RunWithQt.bat

@echo off
set QTDIR=C:\Qt\Qt5.1.1\5.1.1\msvc2012\bin
set QT_QPA_PLATFORM_PLUGIN_PATH=%QTDIR%\plugins\platforms\
start %1
  • pour l'utiliser, faites glisser votre fichier gui.exe et déposez-le sur le RunWithQt.bat dans l'explorateur,
  • ou appelez RunWithQt gui.exedepuis la ligne de commande
Jakub Krzesłowski
la source
0

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

Codage Soberbia
la source
0

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:

@echo off
set QTDIR=E:\QT\5110\vc2017

set INCLUDE=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\ATLMFC\include;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\include;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\ucrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\shared;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\um;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\cppwinrt

set LIB=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\ATLMFC\lib\x86;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\ucrt\x86;C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\um\x86;

set LIBPATH=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\ATLMFC\lib\x86;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86;S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.17134.0;C:\ProgramFiles (x86)\Windows Kits\10\References\10.0.17134.0;C:\Windows\Microsoft.NET\Framework\v4.0.30319;

Path=%QTDIR%\qtbase\bin;%PATH%
set VCIDEInstallDir=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\
set VCINSTALLDIR=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\
set VCToolsInstallDir=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\
set VisualStudioVersion=15.0
set VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
set VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\
set VS120COMNTOOLS=S:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\
set VS150COMNTOOLS=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\
set VS80COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\
set VS90COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
set VSINSTALLDIR=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\
set VSSDK110Install=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VSSDK\
set VSSDK150INSTALL=S:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VSSDK
set WindowsLibPath=C:\Program Files (x86)\Windows Kits\10\UnionMetadata;C:\Program Files (x86)\Windows Kits\10\References
set WindowsSdkBinPath=C:\Program Files (x86)\Windows Kits\10\bin\
set WindowsSdkDir=C:\Program Files (x86)\Windows Kits\10\
set WindowsSDKLibVersion=10.0.14393.0\
set WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.14393.0\
set WindowsSDKVersion=10.0.14393.0\
set WindowsSDK_ExecutablePath_x64=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\
set WindowsSDK_ExecutablePath_x86=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\

mkdir C:\VCProjects\Application\Build\VS2017_QT5_11_32-Release\setup
cd C:\VCProjects\Application\Build\VS2017_QT5_11_32-Release\setup
copy /Y ..\Release\application.exe .
windeployqt application.exe
pause
MyGeertRo
la source
0

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:

 CGAL - the bag for all the goodies
  lib - all libraries for all CGAL-packages
 demo - all the demos I'm interested in
[...] - certainly some other collections, several apps per folder...
Polyhedron.cmd - and a little script for every Qt-exe to make it truly portable.

Dans ce petit exemple, "Polyhedron.cmd" contient le texte suivant:

@echo off
set "me=%~dp0"
set PATH=%me%lib
set "QT_PLUGIN_PATH=%me%lib\plugins"
start /b "CGAL Polyhedron Demo" "%me%demo\polyhedron\polyhedron_3.exe"

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 ...

Thomas Sturm
la source
0

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:

windeployqt ne fonctionne pas pour MinGW QTBUG-80763 Sera corrigé dans 5.14.1

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.

Yahya Tawil
la source