web-dev-qa-db-fra.com

Comment créer un fichier exécutable pour une application Qt?

J'ai cherché sur Internet des informations utiles et claires à ce sujet, c'est ennuyeux qu'une chose aussi banale soit si difficile à faire.

Ce dont j'ai besoin, c'est de créer un fichier exécutable pour mon projet Qt, afin de l'exécuter sur d'autres ordinateurs. Mon projet fonctionne bien dans Qt Creator, mais lorsque j'essaie d'exécuter l'exécutable créé dans le dossier de publication, je reçois des erreurs concernant certaines DLL manquantes, et bien que je les ai toutes placées dans le même répertoire de mon .exe, j'en ai maintenant erreurs sur les points d'entrée dans les procédures à l'intérieur de la dll (QtCore4.dll).

La solution ressemble à un lien statique, j'ai trouvé beaucoup d'informations à ce sujet, mais aucune ne m'a vraiment aidé. Voici ce que j'ai essayé jusqu'à présent:

  • Utiliser l'exécutable créé dans le dossier de sortie comme je l'ai dit plus haut.
  • Liaison statique, en suivant ce tutoriel (et bien d'autres, presque tous la même chose): http://doc.qt.io/qt-4.8/deployment-windows.html mais j'obtiens l'erreur suivante pendant le "configure -static": NMAKE: erreur fatale U1077: '"c:\Arquivos de programas\Microsoft Visual Studio 9. 0\VC\BIN\cl.EXE"': retourne le code '0x2' Stop. Échec de la construction de qmake, code de retour 2

Pour cela, je n'ai trouvé aucune solution, alors je suis là, essayant simplement de créer un fichier exécutable pour mon projet Qt, j'espère que vous pourrez me donner un peu de lumière ici.

18
Paulo Facó

Fondamentalement, vous devez rechercher le sous-dossier mingw profondément dans l'arborescence qt, où résident les utilitaires qt, et copier les DLL nécessaires.

Ce sont les étapes que je suis, basées sur QT 4.7.4, pour empaqueter l'application avec les bibliothèques partagées correctes.

  1. Disons que vous avez installé QT sous c:\qtsdk
  2. Ouvrez votre projet et compilez-le en mode release.
  3. Accédez à ce répertoire: C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin - il contient toutes les bibliothèques partagées. Les bibliothèques de débogage se terminent par un "d" - frex, QtCore.dll est la version finale, tandis que QtCoreD.dll est la version de débogage
  4. Copiez au moins ces fichiers dans votre répertoire de publication (où se trouve votre .exe)

    • mingwm10.dll
    • libgcc_s_dw2-1.dll
    • QtCore4.dll
    • QtGui4.dll

    Je viens de construire, tester et déployer un projet factice de cette façon.

16
Max Lambertini

Voici ce que j'ai fait et je l'ai fait fonctionner après un certain temps; après vous être assuré que votre programme se construit dans Qtcreator, allez dans le répertoire qui contient votre exe et double-cliquez dessus. (J'utilise Windows et je ne sais pas si c'est la même chose sur les autres plates-formes) .Une fenêtre devrait apparaître vous indiquant quel .dll est manquant.Allez dans le répertoire où Qt est installé et tapez le nom exact dans la barre de recherche (en haut à droite dans Windows 7) et la dll devrait apparaître dans les résultats de la recherche.Cliquez avec le bouton droit et choisissez l'emplacement du fichier ouvert.Copiez le fichier où se trouve votre exe.Double cliquez à nouveau sur l'exe.Si un autre .dll manque, répétez la même chose jusqu'à ce qu'il n'en manque aucun. le programme doit s'exécuter. J'espère que cela t'aides.

3
gakwaya

Vous avez donc téléchargé Qt SDK et vous souhaitez lier statiquement les bibliothèques Qt dans votre application, non?

Tout d'abord, si vous établissez une liaison statique, vous n'avez besoin d'aucun Qt * .dll pour être présent n'importe où, car il est intégré à l'application. Cela signifie donc que votre application est construite à l'aide de liens dynamiques.

D'après mon expérience, la façon la plus sûre de faire fonctionner tout cela est:

Téléchargez les sources Qt, générez-les et installez-les avec nmake (à l'aide de l'invite de commandes de Visual Studio depuis le menu Démarrer -> Application -> Visual Studio 2008). N'oubliez pas que la taille de l'application liée statiquement dépend de la taille des * .libs et ceux-ci dépendent de la configuration de pré-génération, par exemple, vous pouvez réduire la taille de votre application en désactivant certaines fonctionnalités (c'est un exemple de configuration pour MacOSX, faites juste attention à ceux spécifiques à Windows et ajoutez le plaftorm approprié - voir configure.exe --help pour plus de détails):

./configure -Arch x86 -platform macx-g++ --universal -cocoa -debug-and-release -opensource -static -fast -no-accessibility -no-sql-sqlite -no-qt3support -no-opengl -no-openvg -qt-zlib -no-gif -no-libmng -qt-libmng -no-libtiff -qt-libjpeg -no-3dnow -sse -no-sse2 -no-openssl -no-dbus -no-phonon -no-multimedia -no-audio-backend -webkit -no-script -no-scripttools -no-declarative -nomake demos -nomake examples -no-exceptions -no-accessibility -confirm-license

Installez, configurez et utilisez le complément Visual Studio pour votre projet Qt ( ici ).

Bonne chance! :)

2
vizZ