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 :

L'exécution requiert trop de DLL (QtGuid4.dll)


Sujet :

Qt

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Points : 50
    Points
    50
    Par défaut L'exécution requiert trop de DLL (QtGuid4.dll)
    Bonjour la communauté,

    J'ai développé un tout petit programme QT sous Ubuntu 9 et l'ai porté sous Windows.
    J'ai testé votre tuto de cross-compilation, mais ça a échoué (ld: : file not found).

    Je suis alors passé sous mon boot windows pour le compiler.
    Ca a marché sans problème avec QT Creator, mais le souci est lors de l'exécution : il me demande un paquet de DLLs, notamment QtGuid4.dll qui a elle seule fait 140 Mo :s

    Le programme en lui-même ne fait que quelques kilo octects... devoir joindre une DLL de 140 Mo, ça le fait moyen !

    Comment régler ce problème ?


    (ah, aussi j'ai remarqué que je n'avais aucun retour console lorsque je le lance sous windows depuis la console... ça me rend direct le prompt commande... j'ai compilé en debug pourant, c'est normal ??)

  2. #2
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    C'est l'inconvénient de compiler en dynamique (shared). Tu es obligé d'embarquer par exemple toute la dll GUI même si tu n'as qu'un seul bouton dans ton application.

    Cependant, j'ai une compilation dynamique sous windows et QtCore4.dll fait 2Mo et QtGui4.dll 7,7Mo. Il est donc très étrange que tu es une dll de 140Mo ???

    Concernant le prompt command, es-tu bien sur d'afficher quelque chose sur la sortie standard avec un cout ou un qDebug ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Points : 50
    Points
    50
    Par défaut
    Pour le debug console, c'est simplement parce qu'il me fallait ajouter "CONFIG += console" dans le .pro que j'avais oublié...

    Pour les DLL, QT 4.6.1 avait une DLL de QtGuid4.dll de 140 Mo !
    Je suis passé en 4.5.2 (histoire d'être comme sous linux) et elle ne fait plus que 72 Mb.

    Et en fait j'ai compris pourquoi !
    Parce que je compile en "debug", les DLL de "release" (sans le "d" dans leur nom) sont beaucoup plus grosses.

    Et effectivement QtGui4.dll ne fait "que" une dizaine de Mo...

    Ca fait tout de même beaucoup !
    Y a-t-il moyen d'éviter d'avoir à se les trimbaler ? En compilant en statique (j'avoue que j'y connais rien en compilation windows... je sais déjà pas très bien comment j'ai réussi à en arriver à mon .exe...) ? Comment faire ?

    Edit : compiler en statique, réussi, merci !

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    les dll debug contienne beaucoup d'info pour débuger. Donc c'est normale que taille soit très grande.
    Il faut utiliser les version release pour une distribution.


    Pour le problème de taille, il n'y as pas de solutions... à la limite, compilé en statique t'évite d'avoir plusieur dll mais te fait un binaire plus gros.
    En quoi cette taille te pose problème?

  5. #5
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    J'imagine que la compilation en statique n'inclut dans le .exe que ce qui est nécessaire. A savoir si l'on utilise juste un bouton, on ne se trimballe pas l'ensemble des composants graphiques que fournit Qt (pour QtGui).

    Je me trompe ?

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par johnlamericain Voir le message
    J'imagine que la compilation en statique n'inclut dans le .exe que ce qui est nécessaire. A savoir si l'on utilise juste un bouton, on ne se trimballe pas l'ensemble des composants graphiques que fournit Qt (pour QtGui).

    Je me trompe ?
    en principe oui. Mais en pratique... de ce que j'ai testé, ce n'est pas vraiment comme cela
    Mais je ne peut pas dire le gain en taille que l'on peut obtenir.

  7. #7
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Citation Envoyé par yan Voir le message
    en principe oui. Mais en pratique... de ce que j'ai testé, ce n'est pas vraiment comme cela
    Mais je ne peut pas dire le gain en taille que l'on peut obtenir.
    C'est bien ce que je pensais, en pratique je n'ai jamais réussi non plus à avoir un gain significatif en statique...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DLL] Enregistrer DLL (COM) par programmation
    Par pataguillon dans le forum MFC
    Réponses: 5
    Dernier message: 14/03/2006, 14h01
  2. Réponses: 2
    Dernier message: 19/10/2005, 19h39
  3. [DLL] Ma DLL execute le Timer une seul fois !
    Par TOTO32 dans le forum Langage
    Réponses: 14
    Dernier message: 13/08/2005, 20h37
  4. DLL BORLNDMM.DLL
    Par masseur dans le forum C++Builder
    Réponses: 1
    Dernier message: 10/05/2005, 12h57
  5. [CR] Probleme avec Dll P2oledb.dll
    Par malban dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 30/08/2004, 09h10

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