web-dev-qa-db-fra.com

L'application déployée avec les bibliothèques QT5 ne démarre pas sur Windows 7

Récemment, nous avons migré notre application basée sur QT sur Windows de QT 4.8 à QT 5, et nous avons rencontré un problème de déploiement. Notez que notre application n'a pas changé, nous l'avons uniquement construite avec le nouveau framework QT5. Avec un certain effort, nous l'avons fait construire avec la bibliothèque QT5 basée sur VS2010; et j'ai réussi à exécuter l'application à partir de Qt Creator.

Comme nous l'avons fait avec QT4, nous avons inclus un ensemble requis de bibliothèques QT avec le programme d'installation.

Dans notre phase de test, lorsque nous avons installé notre application QT5 sur une machine propre; ça ne commencerait pas. Non seulement l'application n'a pas démarré, mais elle n'a généré aucune erreur.

Nous avons exécuté l'application via le vérificateur de dépendances; et il n'y avait aucune dépendance de bibliothèque manquante.

32
Aki

Après plusieurs jours de recherche sans progrès, nous sommes tombés sur un bug QT:

https://bugreports.qt.io/browse/QTBUG-28766

Avec QT5, en plus des bibliothèques QT attendues, msvcr100.dll et msvcp100.dll; il s'avère que vous devez envoyer votre demande avec:

platforms/qminimal.dll
platforms/qwindows.dll

ainsi que. Qui se trouve dans votre bibliothèque locale QT5 installez @:\Qt5.0.0\5.0.0\msvc2010\plugins\platform J'ai cherché partout et je n'ai pas pu trouver cette information dans leur documentation.

37
Aki

Pour moi d'exécuter l'application gui autonome "Hello World" (Qt sdk 5.0.1 mingw, Win7 x64). J'ai besoin d'ajouter les fichiers suivants au répertoire du programme:

  1. plates-formes/qwindows.dll
  2. D3DCompiler_43.dll
  3. icudt49.dll
  4. icuin49.dll
  5. icuuc49.dll
  6. libEGL.dll
  7. libgcc_s_sjlj-1.dll
  8. libGLESv2.dll
  9. libstdc ++ - 6.dll
  10. libwinpthread-1.dll
  11. Qt5Core.dll
  12. Qt5Gui.dll
  13. Qt5Widgets.dll

Les informations complètes de déploiement pour Windows sont disponibles sur doc qt 5.5

15
Andrew

Le meilleur choix est d'utiliser: windeployqt.exe . Cet outil résout toutes les dépendances de votre application.exe.

7
Robert

Oui, bien repéré. J'avais les mêmes problèmes de déploiement en utilisant qt 5.0.2.

De même, le dossier des plates-formes installées avec ces deux DLL dans le dossier des applications, et les déploiements sur Vista et win7 fonctionnent maintenant.

Le marcheur de dépendance n'aide pas ici car il n'informe pas qwindows.dll ou qminimal.dll en tant que DLL requises.

Les dll des plates-formes dans mon installation Qt se trouvent dans\Qt\5.0.2\mingw47_32\plugins\platform.

3
Rob

pour le tutoriel du bloc-notes, sur win7 qt5.1.1

les étapes de déploiement sont les suivantes:

 * changer le mode de construction pour libérer, pas déboguer, 
 * construire, 
 * créer un dossier de sortie quelque part 
 par ex. desktop/notepad /[.____. deposited * 
 * copie le fichier dans le dossier de sortie 
 liste des fichiers: 
 * à partir de "workspace_home/build-notepad-xxx-Release/release" 
 * notepad.exe 
 * de "qt_home/5.1.1/msvc2010/bin" 
 * icudt51.dll 
 * icuin51.dll 
 * icuuc51.dll 
 * libEGL.dll 
 * libGLESv2.dll 
 * Qt5Core.dll 
 * Qt5Gui.dll 
 * Qt5Widgets.dll 
 * 
 * de "qt_home/5.1.1/msvc2010/plugins/plates-formes" 
 * plates-formes/(besoin de créer ce sous-dossier dans le dossier de sortie) 
 * qwindows.dll 
 * 
 * 
 * 
 * exécutez le fichier .exe, assurez-vous qu'il fonctionne, 
 * 
 * D'accord
* 
2
Eric Wang

Les DLL de la plateforme Qt se trouvent dans le dossier "plugins" dans "qtbase": C:\Qt\5.0.0\qtbase\plugins\platform

2
user2030856

J'ai utilisé une instance de QMediaPlayer et QMediaPlaylist et mon application ne démarrerait plus, donnant l'erreur suivante: Cette application n'a pas pu démarrer car elle n'a pas pu trouver ou charger le plugin de plate-forme Qt "windows". Réinstaller l'application peut résoudre ce problème.

Après avoir passé 4 jours à essayer de comprendre ce qui se passait, nous avons découvert qu'il y avait un chemin codé en dur dans Qt5Core.dll pour charger les plugins, en particulier le fichier wmfengine.dll. Assurez-vous de compiler Qt5Core pour ne pas avoir ce chemin codé en dur (:\Qt\5.5\msvc2010).

screenshot of WinDiff

Chemin codé en dur dans Qt5Core.dll échec du plugin wmfengine.dll charger

1
Daniel

Il semble qu'un qt.conf vide situé dans le même répertoire que l'application cause des problèmes pour démarrer une application Qt5 sous Windows 7. Essayez de le supprimer.

1
Frederic Heem