Comment exécuter un programme Qt sans que Qt soit installé?

J’ai écrit un programme avec Qt5.3.1 et l’exécute sur ma machine de développement où cela fonctionne correctement. J’ai copié tous les fichiers .dll nécessaires dans le dossier où se trouve mon fichier .exe. Ceux-ci sont:

  • Qt5Widgets.dll
  • Qt5Network.dll
  • Qt5Gui.dll
  • Qt5Core.dll
  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll
  • libgcc_s_dw2-1.dll
  • libwinpthread-1.dll
  • libstdc ++ – 6.dll

Maintenant, je veux exécuter ce programme sur une machine sur laquelle aucun Qt n’est installé. Comment je fais ça? Il ne devrait pas être nécessaire pour les utilisateurs d’installer un IDE juste pour utiliser un programme, non?

Détails de la machine de développement où elle fonctionne:

La plateforme de déploiement est la suivante:

  • Windows Vista
  • Aucun Qt installé mais tous les fichiers .dll nécessaires sont en place

Les erreurs que je reçois sont les premières:

Cette application n’a pas pu démarrer car elle n’a pas pu trouver ou charger le “plug-in” Windows de la plate-forme Qt. Réinstaller l’application peut résoudre ce problème.

Le message d’erreur suivant est:

Cette application a demandé à Runtime de se terminer de manière inhabituelle. S’il vous plaît contacter le support.

Ensuite, le programme plante. Mais si j’installe Qt5.3.1, ça marche. Il a donc quelque chose à voir avec les fichiers du répertoire c:/Qt

Une meilleure solution consiste à utiliser l’application Qt SDK “windeployqt”. Il est utilisé pour copier toutes les DLL et tous les plug-ins requirejs dans votre dossier d’application en fonction de la plate-forme cible. Vous pouvez alors l’exécuter sur un autre ordinateur. Voici la documentation: https://doc.qt.io/Qt-5/windows-deployment.html .

Par exemple, si votre exécutable a été créé avec mingw53_32 et que votre exécutable est dans “C: \ example_qtapp”:

 QT_INSTALL_DIR\minqw53_32\bin\windeployqt.exe c:\example_qtapp 

This application failed to start because it could not find or load the Qt platform plugin "windows".

Pour ce problème, vous devez copier le plug-in {QTSDK}/plugins/platforms/qwindows.dll dans {YOUR_EXE_DIR}/platforms/qwindows.dll .

La réponse courte est que vous devez soit faire une construction statique, soit redissortingbuer les DLL de la bibliothèque partagée Qt. Si vous recherchez une taille de fichier plus petite, les versions statiques sont souvent meilleures, mais cette approche peut avoir des implications juridiques si vous utilisez Qt5 sous une licence LGPL . Je ne suis pas avocat, mais vous pouvez lire les règles de liaison de la LGPL dans la section 4.1 de la LGPL .

La longue réponse est que vous devez lire le guide de déploiement Qt5 général et le guide de déploiement Qt5 for Windows . Ceux-ci vont dans pas mal de détails.

J’ai également rencontré ce problème,

Dans votre répertoire Qt, avec la bonne version de Qt C: \ Qt \ Qt5.2.1 \ 5.2.1 \ mingw48_32 \ plugins \ plates-formes \

copier qwindows.dll dans un nouveau dossier qui habite à côté de votre exécutable, de sorte que votre liste soit

  • Qt5Widgets.dll
  • Qt5Network.dll
  • Qt5Gui.dll
  • Qt5Core.dll
  • icudt51.dll
  • icuin51.dll
  • Icuuc51.dll
  • libgcc_s_dw2-1.dll
  • libwinpthread-1.dll
  • libstdc ++ – 6.dll
  • plates-formes / qwindows.dll

Vous devez placer les DLL Qt le long de la version de votre exécutable. Ce sont Qt5Core.dll , Qt5Gui.dll et éventuellement ceux des autres modules que vous avez utilisés. Ces fichiers dll se trouvent dans votre dossier Qt Directory installé dans le dossier bin. Vous devez également placer LIBGCC_S_DW2-1.DLL , MINGWM10.DLL et LIBSTDC++-6.dll si vous utilisez MinGW.

Si vous utilisez des plugins, placez leur dll dans un dossier nommé plugins côté de votre exe. En cas d’utilisation d’icons et d’images, vous devez envoyer leurs dll comme qico.dll et qsvg.dll dans un dossier nommé imageformats .

Si les dlls sont là, ils devraient fonctionner. Je suppose que vous manquez les bibliothèques d’exécution / dll de votre IDE. Par exemple, si vous utilisez Visual Studio 2010 comme IDE, vous devez installer le lien VS2010 Redissortingbutable x86 / x64 en fonction de votre architecture.

Vous devez également copier {QTSDK} / plugins dans le répertoire où se trouve votre exécutable. Ensuite, créez qt.conf au même endroit (avec un exécutable) avec le contenu suivant:

 [Paths] Plugins=plugins 

Ensuite, lancez votre programme. J’ai fait la même chose sur Linux.