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 exécutable compilé en release


Sujet :

Qt

  1. #1
    Invité
    Invité(e)
    Par défaut Problème exécutable compilé en release
    Bonjour,

    je rencontre un problème qui me dépasse totalement,
    je veux afficher une image au démarrage de l'application, j'utilise naturellement QSplashScreen.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    QApplication application(argc, argv);
     
    QSplashScreen demarrage(QPixmap("demarrage.jpg"));
    demarrage.show();
     
    application.exec();
    Lorsque je compile (avec Qt Creator fourni par le SDK de Qt 4.5) en debug, aucun problème, tout fonctionne...

    Lorsque je compile en release, rien ne s'affiche... Sauf si je place l'exécutable et l'image dans le répertoire qt/2009.01/qt/bin

    J'ai essayé de faire aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QSplashScreen demarrage(QPxmap(QCoreApplication::applicationDirPath() + "/demarrage.jpg"))
    mais celà ne marche pas non plus...

    Quelqu'un aurait-il une idée ?

  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
    Salut et bienvenue sur le forum
    c'est un problème de path effectivement.
    Tout dépend ou se trouve ton image.

    Si tu met ton image à côté de l'exe, c'est bizarre que ceci ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QSplashScreen demarrage(QPxmap(QCoreApplication::applicationDirPath() + "/demarrage.jpg"))
    N'aurais tu pas plusieurs version de Qt installé?
    es ce que ton exe trouve les dll et les plugin image?


    Si c'est toujours la même image, tu pourrais utiliser une ressource pour mettre ton image.

  3. #3
    Invité
    Invité(e)
    Par défaut
    J'ai réussi à résoudre le problème en utilisant les dll situées dans qt/2009.01/qt/lib

    et non qt/bin

  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
    Citation Envoyé par ooprog Voir le message
    J'ai réussi à résoudre le problème en utilisant les dll situées dans qt/2009.01/qt/lib

    et non qt/bin

    tu n'aurais pas télécharger une version précompilé et recompiler Qt?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Je me permet de upper ce post car je viens d'être confronté au même probléme pourtant j'ai téléchargé Qt depuis le site officiel :s

    M'enfin tant que ca marche ...

  6. #6
    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
    Il est bien plus intéressant d'utiliser des fichiers de ressources, même pour une seule image, car l'image est ainsi intégré à l'éxécutable (pas besoin de la trimballer partout lorsqu'on veut la déployer sur d'autres machines).

    Sinon, c'est en effet relativement étrange. Mettre le chemin complet reste encore le meilleur moyen de ne pas avoir à changer l'image de place.

    G.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 154
    Points : 84
    Points
    84
    Par défaut
    Je pense avoir saisi le souci, le SDZ indique comme include

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <QApplication>
    or quand on crée un projet via Qt Creator l'entête pré compilé est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include<QtGui/QApplication>
    J'ai remarqué également une différence de taille entre les dll :

    C:\Qt\2009.02\bin\QtCore4.dll -> 1.97Mo
    C:\Qt\2009.02\qt\bin\QtCore4.dll -> 2.61Mo

    Idem pour QtGui qui fait 7.325Mo et 11.247Mo de l'autre.

    Je vais tenter de remplacer mes includes et de recompiler, je verrais alors si on peut utiliser les DLLs plus "light" et si il est également possible d'utiliser les plus grosse question d'éventuel rétro compatibilité .

    Je vous dis quoi d'ici peu



    Edit : J'ai fais les tests, malheureusement rien de concluant : en remplaçant tout mes includes (QApplication,QtGui,QtCore,QString) par leur équivalent situé dans un sous dossier (QtCore/QString,QtCore/QtCore,QtGui/QtGui et enfin QtGui/QApplication) ; l'application refuse de se lancé avec les DLLs "light" j'obtiens le message suivant :
    Le point d'entrée de procédure _Z5qFreePv est introuvable dans la bibliothèque de liens dynamiques QtCore4.dll
    Après une brève recherche sur bingoogle il semblerait que ca soit bien les DLLs situé dans %QTDIR%/qt/bin qui doivent être utiliser et non pas celle dans %QTDIR%/bin, le changement des includes n'a donc rien a voir.

    D'ailleurs si on regarde le fichier de commande qtenv on y trouve ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set PATH=C:\Qt\2009.02\qt\bin
    ce qui va dans le même sens que ce qui a été dis précédemment.

    La question qui subsiste, a quoi servent donc les DLLs "light"

    Peut être on t il compilé le strict nécessaire pour faire fonctionner leur programme de démo, mais alors dans ce cas pourquoi ne pas avoir utiliser les DLLs "normales" afin de gagner en taille au niveau du fichier d'installation ?

    Bon aller j'arrête la avec mes questions, on me souffle dans l'oreille que je suis trop curieux

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

Discussions similaires

  1. problème exécution programme compilé
    Par docteurbunny dans le forum Linux
    Réponses: 35
    Dernier message: 18/11/2008, 11h38
  2. Problème de compilation et d'exécution
    Par marguerite99 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 02/03/2008, 16h33
  3. Débutant : Problème de compilation ou d'exécution
    Par infolove dans le forum Général Java
    Réponses: 14
    Dernier message: 29/01/2008, 22h08
  4. Problème Exécution en Release mais pas en Debug
    Par nono27200 dans le forum VB 6 et antérieur
    Réponses: 67
    Dernier message: 08/11/2007, 16h55
  5. [VB.NET] Problème exécution en mode release.
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/01/2005, 17h39

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