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.
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.
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:
Les informations complètes de déploiement pour Windows sont disponibles sur doc qt 5.5
Le meilleur choix est d'utiliser: windeployqt.exe . Cet outil résout toutes les dépendances de votre application.exe.
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.
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 *
Les DLL de la plateforme Qt se trouvent dans le dossier "plugins" dans "qtbase": C:\Qt\5.0.0\qtbase\plugins\platform
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).
Chemin codé en dur dans Qt5Core.dll
échec du plugin wmfengine.dll
charger
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.