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 :

créer un exe indépendant


Sujet :

Qt

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Points : 119
    Points
    119
    Par défaut créer un exe indépendant
    Salut,

    Je sais que ce sujet à dejà été traité, j'ai tous lu mais rien n'a résolu mon problème.

    J'utilise visual c++ express 2008. J'aimerai créer un exécutable pour mon application, s'il le faut ca me dérange pas d'avoir des DLL à côté.

    J'aimerai que mon exécutable puisse fonctionner sur des ordinateurs ne contenant ni Qt ni visual c++ installé.

    - J'ai géneré mon projet en mode Release ayant l'option DLL multithread (/MD) activé. (J'ai essayé avec Multithread (/MT) mais ca me donne des erreurs de compilation)

    -J'ai utilisé Dependency walker pour savoir de quel DLL j'ai besoin et il m'a indiqué: QTGUI4.DLL QTCORE4.DLL MSVCP90D.DLL MSVCR90D.DLL KERNEL32.DLL. J'ai mis tous ces DLL dans le même dossier que mon exe et j'ai transféré le tout sur un autre ordinateur.

    - Quand j'exécute le .exe, il me dit:
    QFormLayout could not be located in the dynamic link library QtGui4.dll
    ceci est dû au fait que l'ordinateur sur lequel j'exécute n'a pas la version Qt4.4 et donc ne reconnait pas le QFormLayout, mais l'exécutable est supposé fonctionner même sans Qt installé
    Ceci semble indiqué que mon exécutable est loin d'etre indépendant de Qt.

    Comment faire ?
    Merci de votre aide !

  2. #2
    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 Nehmé Voir le message
    - J'ai géneré mon projet en mode Release ayant l'option DLL multithread (/MD) activé. (J'ai essayé avec Multithread (/MT) mais ca me donne des erreurs de compilation)
    Pourquoi as tu eu besoin de préçisé ceci? comment créé tu ton projet???
    tu as essayer d'utiliser "qmake -tp vc" ?

    Citation Envoyé par Nehmé Voir le message
    -J'ai utilisé Dependency walker pour savoir de quel DLL j'ai besoin et il m'a indiqué: QTGUI4.DLL QTCORE4.DLL MSVCP90D.DLL MSVCR90D.DLL KERNEL32.DLL. J'ai mis tous ces DLL dans le même dossier que mon exe et j'ai transféré le tout sur un autre ordinateur.
    MSVCP90D.DLL MSVCR90D.DLL
    ?? pourquoi se sont les version debug???
    d'ou as tu copier ce dll? chez ùoi je les trouve ici :
    C:\Program Files\Microsoft Visual Studio 9.0\VC\redist

    Tu as du faire une ou deux petite erreur. Mais normalement tu ne devrais pas avoir de problème

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Points : 119
    Points
    119
    Par défaut
    Sincèrement désolé !

    Le problème est dû au fait que pour copier QTGUI4.DLL QTCORE4.DLL j'ai fait un search. Apparement les DLL de Qt4.3.4 était toujours dans mon ordinateur malgrès que j'ai supprimé tout le dossier Qt4.3.4 avant d'installer Qt4.4.3
    Et comme Yan m'a indiqué, il me fallait les versions release de MSVCP90D.DLL MSVCR90D.DLL et donc MSVCP90.DLL MSVCR90.DLL

    Merci Yan pour ta réponse.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    salut à tous, je rencontre un problème similaire à Nehmé.

    J'ai compilé (en dynamique) mode release mon programme utilisant Qt 4.4.3 le tout sous Visual Studio 2008 sous XP.
    Mon .exe fonctionne bien sur le PC où je développe.
    Mais lorsque je passe sur un PC où n'est installé ni Qt ni Visual le lancement du programme me balance l'erreur :
    C:\Chemin\monprog.exe
    Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. Réinstaller l'application pourrait résoudre ce problème.
    alors qu'il est bien accompagné des dll : QTGUI4.DLL QTCORE4.DLL MSVCP90.DLL MSVCR90.DLL. J'ai bien vérifié avec Dependency walker qu'il ne dépend pas d'autres dll.
    donc ma question , que manque t-il au programme pour qu'il se lance?
    j'ai lu quelque part qu'il fallait installer la derniere RC de VC++ sur le 2eme PC est-ce vrai? je pensais que les DLL de visual 2008 suffisait.
    j'ai aussi lu que l'on peut utiliser cutebuilder pour compiler en statique mais j'aimerais éviter ça (apparemment il modifie la méthode de compil de l'ide de manière irréversible)

    une idée? quelqu'un qui a résolu ce problème?

  5. #5
    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
    tu as bien pris les dll de ton visual et de la bonne version de Qt?

    Tu a copier les dll à côté de l'exe?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    oui tout à fait, j'ai bien vérifié les chemins des DLL qu'il utilise avec dependency walker donc pas de doute ce sont les bonnes DLL, et je les ai mis dans le même dossier

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Points : 119
    Points
    119
    Par défaut
    Je pense que Yan demandais plutôt si t'as pris les DLL du bon endroit, et non pas quel sont les DLL. Probablement ceci veut dire que les DLL QTGUI4.DLL QTCORE4.DLL MSVCP90.DLL MSVCR90.DLL peuvent se trouver dans plusieurs endroits dans ton ordinateur et faudrai que tu vérifies si t'as bien pris les bons du bon endroit !

    Vérifies aussi si tu génères ton exe en Release.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    oui c'est ce que j'ai fais, j'ai bien précisé que je suis allé chercher les DLL en vérifiant le chemin grâce à Dependency Walker, et je compile bien en mode release.

    en fait j'ai comme l'impression que mon exe est corrompu

    j'ai essayé en mode debug (en prenant les DLL visual adéquate) et j'ai le même message d'erreur

    et ceci sur plusieurs PC différents

  9. #9
    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 atomicJo Voir le message
    oui c'est ce que j'ai fais, j'ai bien précisé que je suis allé chercher les DLL en vérifiant le chemin grâce à Dependency Walker, et je compile bien en mode release.
    As tu bien copié les dll redist de ton visual?
    "repertoire d'install de visual"\VC\redist\x86\Microsoft.VC90.CRT

    AS tu bien copié les dll à côté de ton exe?

    AS tu bien copié les dll de Qt que tu utilise?

    Je me méfierais des path que donne Dependency Walker...

    Que fait ton appli? C'est peut être un autre problème comme un fichier d'init manquant. Utilise tu des images? Si oui, as tu copier les plugin Qt?

    [QUOTE=atomicJo;4090672)
    en fait j'ai comme l'impression que mon exe est corrompu
    [/QUOTE]
    c'est à dire??

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par yan Voir le message
    As tu bien copié les dll redist de ton visual?
    "repertoire d'install de visual"\VC\redist\x86\Microsoft.VC90.CRT
    ces DLL sont strictement les mêmes que celles réellement utilisées par le programme et qui se trouve dans le chemin : C:/Windows/WinSxS/x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375
    JDans les 2 cas j'ai la même erreur

    Citation Envoyé par yan Voir le message
    AS tu bien copié les dll à côté de ton exe?
    OUI

    Citation Envoyé par yan Voir le message
    AS tu bien copié les dll de Qt que tu utilise?
    oui celles du répertoire bin du dossier Qt

    Citation Envoyé par yan Voir le message
    Que fait ton appli? C'est peut être un autre problème comme un fichier d'init manquant. Utilise tu des images? Si oui, as tu copier les plugin Qt?
    non pas de fichier d'init, mais oui j'utilise des images, d'ailleurs j'ai remarqué que quand je lance le programme sous Visual en mode debug il chargeait pas mal de dll propre à des formats d'images genre qtiff.dll qsvg4.dll etc. j'ai donc pris soin de les copier à côté du .exe mais toujours la même erreur...

    Quand je dis corrompu c'est parce que le message d'erreur ne mentionne pas un manque de dll ou une impossibilité de charger tel fonction à telle adresse comme c'est le cas quand il manque une dll, du coup je me demande si le problème vient bien de là


    J'ai effectué plus de tests et j'obtiens des résultats que je ne comprend pas.
    J'ai installé Visual studio 2008 sur une autre machine : et là le programme se lance sans souci, en vérifiant avec Dependency Walker je remarque qu'il utilise les dll Qt qui sont à côté de l'exe mais qu'il n'utilise non pas les dll msvcp90 et msvcr90 du même dossier mais celles qui sont dans : C:/Windows/WinSxS/x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375 (donc installées par visual studio)

    Et lorsque je supprime ce dernier dossier le .exe charge les dll visual présentes à côté mais le logiciel de ne se lance pas !

    etranges résultats!

  11. #11
    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
    tu as aussi copié le manifest pour les dll de visual?
    pour les plugin image, il faut les copier dans un repertoire imageformats à côté de l'exe

    [edit] pourquoi le manifest :
    http://en.wikipedia.org/wiki/Side-by-Side_Assembly

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    j'ai mis les dll d'images dans un dossier imageformats -> même erreur
    j'ai rajouté le fichier manifest (nom du fichier : monprog.exe.intermediate.manifest) et toujours la même erreur

  13. #13
    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 atomicJo Voir le message
    j'ai mis les dll d'images dans un dossier imageformats -> même erreur
    j'ai rajouté le fichier manifest (nom du fichier : monprog.exe.intermediate.manifest) et toujours la même erreur
    je parlais du manifest des dll visual

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    wouaw ça marche merci beaucoup

    il fallait donc rajouter à côté du .exe le fichier Microsoft.VC90.CRT.manifest qui se trouve dans VC/redist/x86/Microsft.VC90.CRT

    je ne sais pas vraiment pourquoi ça change tout puisqu'apparemment le manifest sert à gérer les différentes versions d'une même DLL sur un même système or je n'avais qu'une version de la DLL et j'ai vérifié il utilise bien les DLL qui sont à côté du .exe

  15. #15
    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
    justement, le manifest sert à trouver la bonne version de la dll. Donc si pas de manifest, impossible de trouver la dll.

    Il est possible d'utiliser le systèmes des manifest avec les dll Qt, mais je ne sais plus comment

    [edit]
    a si tout est dans la doc
    http://qt.developpez.com/doc/4.5/dep...cation-package

  16. #16
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Pourquoi vous battre avec les dll et manifest de VC++ alors qu'ils fournissent un installeur ?

  17. #17
    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 IrmatDen Voir le message
    Pourquoi vous battre avec les dll et manifest de VC++ alors qu'ils fournissent un installeur ?
    Je trouve cela lourd.
    Ca t'oblige à faire installer les redist et il faut que tu fournisse la bonne version de redist.

    Mais bon, c'est un avis perso.

  18. #18
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Tu peux aussi l'intégrer à ton installeur

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    juste par curiosité où trouve t-on cet installeur?

  20. #20
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Sur le site de Microsoft, cette page pour 2005, le lien pour VC++ 2008 est en bas de la page.

Discussions similaires

  1. [NetBeans] Créer un exe avec NetBeans
    Par radicalrider dans le forum NetBeans
    Réponses: 4
    Dernier message: 16/07/2012, 16h22
  2. Réponses: 9
    Dernier message: 07/08/2006, 15h06
  3. [VBA-E] Possibilité de créer 1 .exe de mon appli ?
    Par teaRz dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/05/2006, 16h02
  4. Créer un exe avec access
    Par uloaccess dans le forum Access
    Réponses: 1
    Dernier message: 04/11/2005, 16h43
  5. Créer monprog.exe en gris (inactif) dans VB6
    Par Loyre dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/01/2005, 13h40

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