IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Incorporer les DLL dans le .exe


Sujet :

Qt

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut Incorporer les DLL dans le .exe
    Bonjour

    Sur Windows, pour faire fonctionner un exécutable fait avec Qt, il faut que les DLL QtCore4, QtGui4 et mingwm10.dll soient présentes sur la machine.

    Est-il possible (le mieux serait avec une option de Qmake que je n'ai pas encore trouvée ...) d'incorporer ces DLL à l'exécutable pour n'avoir qu'un seul fichier ?

    Merci d'avance
    Kwakanar

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Oui, si tu compiles tout en static.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 93
    Points
    93
    Par défaut
    Effectivement, pour ce qui est des bibliothèques Qt, il faut les recompiler en bibliothèques statiques plutôt qu'en DLLs.

    Par contre il est difficile de se débarrasser de mingwm10.dll car cette DLL est liée au compilateur. Le seul moyen est de recompiler Qt après avoir enlevé l'option -mthreads du fichier mkspecs/win32-g++/qmake.conf. Dans ce cas, il faut s'assurer de ne jamais utiliser de threads dans le programme final !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut
    Effectivement, pour ce qui est des bibliothèques Qt, il faut les recompiler en bibliothèques statiques plutôt qu'en DLLs.
    Peux-tu m'indiquer comment faire ceci ?

  5. #5
    Nouveau membre du Club Avatar de minirop
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Points : 36
    Points
    36
    Par défaut
    tu télécharges les sources de Qt et au moment du "./configure" (configure.exe sous win32) tu rajoutes en paramètre -static (de tête)
    Envoyez des données et des fichiers en POST avec Qt : SendForm

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 94
    Points : 82
    Points
    82
    Par défaut
    Mais il n'est pas possible de choisir au moment de la compilation si je veux linker en statique ou en dynamique ?

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Non, parce que c'est à l'édition des liens qu'on choisit de lier à un bibliothèque statique ou dynamique.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par kwakanar
    Mais il n'est pas possible de choisir au moment de la compilation si je veux linker en statique ou en dynamique ?
    Pour linker statiquement avec Qt, il faut disposer d'une bibliothèque Qt statique. Pour linker dynamiquement avec Qt, il faut disposer d'une DLL (ou bibliothèque dynamique) Qt. Or Qt n'est fourni par défaut qu'avec une DLL. Il faut donc construire une bibliothèque Qt statique en commençant par configure -static avant toute tentative de linker statiquement avec Qt.

Discussions similaires

  1. Ranger les .dll dans le .exe
    Par imados dans le forum VB.NET
    Réponses: 19
    Dernier message: 16/09/2007, 16h57
  2. Intégrer une dll dans un EXE
    Par Akim13 dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 02h11
  3. Inclusion d'une DLL dans un exe?
    Par luareon22 dans le forum MFC
    Réponses: 10
    Dernier message: 29/08/2005, 12h08
  4. Inclure une DLL dans le .exe final?? possible?
    Par xavmax dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2005, 17h00
  5. modifier l'adresse d'un dll dans un .exe
    Par Mr Meuble dans le forum Windows
    Réponses: 4
    Dernier message: 02/03/2004, 16h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo