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 :

Problème de taille de l'application


Sujet :

Qt

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 38
    Points : 25
    Points
    25
    Par défaut Problème de taille de l'application
    Salut.
    J'ai fait une petite application avec Qt dont l'executable sous linux est de quelques centaines de kilo.
    Mais lorsque je veux faire l'executable sous windows, j'ai eu besion de quelques fichiers DLL dont la taille est superieur à 100MO!!
    Je veux savoir si il ya un endroit particulier dans windows pour installer mon application, ou bien si je peux marcher mon applicatiion sans les DLL. D'aprés ce que je sais, skype et texmaker et d'autres programmes sont faits avec Qt et pourtant leur taile ne depasse pas quelques disaines de Mo. j'ai vu meme le dossier d'installaton de skype dans program files et j'ai pas trouvé les DLL de Qt

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Salut,

    Alors tout d'abord, le but des DLL est d'être partagées, c'est à dire que plusieurs applications peuvent utiliser les mêmes DLL pour fonctionner. C'est d'ailleurs quelque chose que ton système d'exploitation fait en permanence. Il existe donc des endroits "standards" où sont stocker les librairies sur un système, pour que tout les applications puissent y avoir accès (si je ne me trompe pas, sous Linux c'est /usr/lib, et sous windows c'est C:\windows\system32).

    Donc si ton application utilise Qt, et que ces dll sont déjà dans le répertoire system32, tu n'as pas besoin de les rajouter dans le dossier de ton application. Par contre, je trouve ça étrange que tu aies plus de 100 Mo de DLLs.

    Sinon, tu peux utiliser la compilation statique, qui va en fait copier toutes les fonctions nécessaires à ton application directement dans l'éxécutable. Ton exécutable sera donc plus gros que celui avec les DLLs, mais restera plus minces que l'exécutable + les DLLs. Par contre, tu n'as plus l'avantage du partage des bibliothèques.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 38
    Points : 25
    Points
    25
    Par défaut
    Merci bcp pour votre aide, mais j'aime bien savoir comment faire la compliation statique?

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    En gros, il faut recompiler Qt avec les bonnes options de configuration.

    Voici aussi la doc Qt sur le sujet.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  5. #5
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Il est cependant important de noter que si tu utilises la version LGPL de Qt en compilation statique, tu devras distribuer ton application sous une licence compatible et donc fournir ton code source.

    Du moins c'est ce qui se dit partout.

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 587
    Points
    188 587
    Par défaut
    Citation Envoyé par Gulish Voir le message
    Par contre, je trouve ça étrange que tu aies plus de 100 Mo de DLLs.
    Là, c'est un énorme problème de compréhension de Qt : justement, le framework est divisé en modules +/- indépendants, tu n'en as donc pas besoin de tous tout le temps. Sélectionne les modules utiles (si ton application ne lie pas à QtXml, pas besoin d'en mettre la DLL). Aussi, choisis : soit ton application est compilée en mode débug, tu utiliseras les DLL de débug ; sinon, les DLL de release.

    Si tu prends tous les modules en debug et release, alors tu fais les 100 Mo. Sinon, c'est très variable (au moins les 2 Mo de QtCore).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 38
    Points : 25
    Points
    25
    Par défaut
    j'arrive pas à faire la compilaton statique malgré que j'ais essayé de comprendre la discussion que Gulish m'a envoyé
    En plus, le fichier dll qui m'énérve est QtGuid4.dll, il pese 140 Mo!
    Merci de m'aider!

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    En plus, le fichier dll qui m'énérve est QtGuid4.dll, il pese 140 Mo!
    Hmm, 140 Mo, c'est beaucoup, chez moi il n'en fait que 11.6Mo.
    En tout cas, il faut que tu compile en release, et non plus en debug, quand tu veux distribuer ton application. La compilation en debug permet d'ajouter plus d'informations sur le déroulement du programme, afin de permettre au développeur de corriger les erreurs plus facilement. Il existe donc des dll pour le debug, et pour le release. Souvent les dll de debug contiennent un petit "d" (comme dans ton cas QtGuid4.dll).

    Pour compiler en static, il faut faire un
    configure -static -machin1 -machin2
    et relancer la compilation.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  9. #9
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Ou plus simplement, entrer en ligne de commande dans le répertoire de Qt

    faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    configure.exe -static -debug-and-release
    puis ensuite pour mingw


    En cas de problèmes dus à des résidus d'une précédente tentative, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mingw32-make confclean
    en premier avant de lancer configure

  10. #10
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 587
    Points
    188 587
    Par défaut
    Ce que je ne comprends pas du tout, c'est votre entêtement pour la compilation statique : il lui suffit de virer toutes les DLL de debug, de linker en release, de ne mettre que les DLL qui vont bien et le problème est résolu. Lui demander de lier en statique, c'est sortir l'Armada pour tuer une larve .
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  11. #11
    Membre averti
    Avatar de Architekth
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Points : 301
    Points
    301
    Par défaut
    Je plussoie dourouc05.

    Compile en release et tes DLL seront beaucoup plus petit. Quand tu parles de QtGuid4.dll c'est un DLL de debug.
    Une fois ton application compilée en release tu auras plus qu'à utiliser QtGui4.dll qui lui fait 9,3Mo chez moi contre 144Mo en version debug.

    Pas la peine d'utiliser la compilation statique pour si peu

Discussions similaires

  1. Icone de l'application : problème de taille
    Par Ceubex dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 03/05/2011, 09h51
  2. Problème de taille application flex
    Par tus01 dans le forum Flex
    Réponses: 5
    Dernier message: 17/03/2009, 09h59
  3. Problème de fermeture de l'application
    Par SkyDev dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2004, 02h06
  4. [swing][JComboBox]Problème de taille
    Par n!co dans le forum Composants
    Réponses: 8
    Dernier message: 06/03/2004, 10h53
  5. [langage] Problème de taille de fichier à mettre dans
    Par And_the_problem_is dans le forum Langage
    Réponses: 10
    Dernier message: 13/08/2002, 09h41

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