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 :

Mon programme en console et le runtime error.


Sujet :

Qt

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut Mon programme en console et le runtime error.
    Bonjour,

    j'aurais besoin d'un coup de main si vous avez 2 minutes, svp...
    En fait j'ai crée un app console avec Qt, et quand je lance la console avec mes paramètre en entré ça plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    #include <QtCore/QCoreApplication>
    ...
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
     
       if(QString::compare(argv[0], "toto", Qt::CaseInsensitive) == 0)
       {
            QString verif(argv[2]); //converti char* en QString 
            QString verif2(argv[3]); //converti char* en QString 
     
            QImage* monImage = MaLibStatic::MaFonctionStatic(verif);
            monImage ->save(verif2);
            free(monImage);
       }
        return 0;
    }
    Ici on rentre dans le if si j'ai tapé dans console
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monExe.exe toto image.png saveImage.png
    Ca rentre bien dans le if mais après j'ai deux plantage avec marqué "monExe.exe a cessé de fonctionner"

    Si je met en commentaire les ligne
    QImage* monImage = MaLibStatic::MaFonctionStatic(verif);
    et
    monImage ->save(verif2);
    j'ai plus les erreurs.

    Par contre si j'en laisse un des deux ou les deux j'ai les erreurs "monExe.exe a cessé de fonctionner"

    Plus dans ma console une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this application has requested the runtime to terminate it in an unusual way
    Alors que en mode debug lancé sans le mode console et en tapant les paramètres en dur, tout marche...
    Je suis vraiment bloqué...

    Une idée?

    Merci

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Il faudait que tu montre comment tu as crée ton QImage dans ta fonction static. Apres je pense que tu dois faire une new donc il faut faire un delete et pas un free.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Oui je fais un new donc j'ai remplacé free par delete, merci
    mais j'ai toujours mes erreurs...

    Mais pourquoi ça marche en debug? et pas quand je lance une console...

  4. #4
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Essaye peut être d'afficher tes deux QString avant de créer ton image, voir ce que te donne réellement windows avec les arguments. Peut être qu'un QString invalide ou vide fait planter ta fonction statique, à ce moment là ajoute quelques vérifications dans ta fonction statique pour être sûr d'avoir un argument correct pour le code qui suit.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Après vérif mes arguments sont correctes...

    Aucune erreur dans ma fonction static normalement...
    mais meme si je met en commentaire la ligne de l'appel à la fonction static j'ai quand meme l'erreur pendant le monImage->save(verif2);

    Ça m'énerve!

  6. #6
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Si tu ne crées plus l'objet QImage tu ne pourras pas appeler "save" avec ton pointeur. Là comme ça je ne vois vraiment pas ce qui cloche. Si tu as un debugger essaye de voir préciser où ça plante, sinon tu mets des cout un peu partout dans ta fonction statique pour voir jusqu'où ton programme s'exécute.

  7. #7
    Membre éclairé Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par défaut
    Dans ton save, il faudrait que tu précise le format...
    bool QImage::save ( const QString & fileName, const char * format = 0, int quality = -1 ) const

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Si tu ne crées plus l'objet QImage tu ne pourras pas appeler "save" avec ton pointeur
    J'en crée un bidon, et quand je fais save ca plante...

    Dans ton save, il faudrait que tu précise le format...
    J'ai fais avec/sans le format avec/sans la qualité, rien ne change...

    Si tu as un debugger essaye de voir préciser où ça plante
    En mode debug le programme marche.
    C'est seulement quand je lance mon invite de commande, et que je lance mon programme que ca marche pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monExe.exe toto image.png saveImage.png
    C'est bizarre....

  9. #9
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Bah à part mettre des "cout" partout pour voir ce qui fait planter l'exécution dans ta console, je vois pas quoi faire désolé :/

  10. #10
    Membre éclairé Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par défaut
    En mode "invite de commande" ça ne marche pas! Ton programme est donc correct mais tu dois régler ta configuration au niveau du path

    Essai juste de mettre des chemins absolus pour vérifier que cela fonctionne dans les deux modes
    Si c'est bon alors il faudra regarder du coté des variables d'environnement ou alors dans ton .pro ou encore créer un .qrc

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Essai juste de mettre des chemins absolus pour vérifier que cela fonctionne dans les deux modes
    C'est a dire? quand j'ouvre mon image? ou autre part?

    Merci

  12. #12
    Membre éclairé Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:/workspace/projetX/images/temp/monImage.png"
    partout !

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    C'est fais, y a aucun changement les même erreurs...

    je fais peut etre mal le lancement de l'application console?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QCoreApplication app(argc, argv);

  14. #14
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Citation Envoyé par Twubi Voir le message
    En mode debug le programme marche.
    C'est seulement quand je lance mon invite de commande, et que je lance mon programme que ca marche pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monExe.exe toto image.png saveImage.png
    C'est bizarre....
    pas vraiment. Lorsque tu lance le programme avec un debuggeur, l'allocation mémoire n'est pas la même. Ce qui fait que certaine erreur mémoire garde ton appli "tomber en marche".

    Il faudrait voir le code de

    MaLibStatic::MaFonctionStatic

    sinon l'utilisation de free est surement faux et t'embête pas avec les pointeurs pour QImage. Qt implémente ses copy sur le COW :
    http://qt.developpez.com/faq/?page=g...optimise-copie

  15. #15
    Membre émérite

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Je rejoins gassi64 sur l'histoire des chemins relatifs. En effet, ton truc doit planter parce que ton programme ne trouve pas l'image avec le nom donné en argument (en supposant que ta méthode statique fonctionne correctement). Quand tu lances ton appli avec ton IDE, tu es directement dans le répertoire courant, donc ton fichier trouve les images.

    Par contre avec la console, ce n'est pas forcement le cas. Ajoute une condition pour voir si tu arrives bien à ouvrir l'image dans ton fonction statique. Verifie peut etre aussi que tu as bien les droits en écriture en mode console (pour faire le save).

    G.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Non j'ai essayé avec le chemin absolu... même resultat....

Discussions similaires

  1. Programme de gestion d'étudiants : runtime error 100
    Par attounsi dans le forum Pascal
    Réponses: 3
    Dernier message: 17/11/2013, 21h34
  2. Lancer mon programme dans une console, en dehors d'Eclipse.
    Par Pierre8r dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 10/10/2008, 20h14
  3. Runtime error mon application ne s'execute pas
    Par amireve dans le forum Langage
    Réponses: 4
    Dernier message: 23/04/2006, 17h45
  4. [TP] Runtime error 200 : programme TP5 non patchable
    Par HERON Daniel dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 02/11/2005, 21h53
  5. Réponses: 7
    Dernier message: 02/09/2005, 15h15

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