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 d'exécution des programmes compilés


Sujet :

Qt

  1. #1
    Membre habitué Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Points : 137
    Points
    137
    Par défaut Problème d'exécution des programmes compilés
    Bonjour à tous,
    je viens vers vous car j'ai ce problème depuis bientôt plusieurs mois, et je n'ai pas trouvé de solutions dans les forums que j'ai visité !
    J'utilise QtCreator pour créer des programme c++ utilisant Qt. Une fois les programmes faits, je les exécutes depuis QtCreator sans aucun problème;
    Mais mon but serait de pouvoir exécuter mon .exe directement. Je compile donc en mode release (j'ai aussi essayé en mode debug).
    J'ai ensuite lancé mon .exe et ajouté toutes les .dll qu'il me demandait pour fonctionner (en voici la liste: libgcc_s_dw2-1.dll, libstdc++-6.dll, libwinpthread-1.dll, Qt5Core.dll, Qt5Guid.dll, Qt5Widgets.dll). Pour certains programmes assez simple, ça marche, mais pour la plupart, j'ai ensuite l'erreur suivante :
    "L'application n'a pas réussi à démarrer correctement (0xc000007b). Cliquer OK pour fermer l'application."
    Je ne pense pas qu'il manque une dll, sinon il m'indiquerait le nom de celle qui manque, mais je ne vois vraiment pas comment régler le problème
    J'ai lu qu'il fallait réinstaller l'application concernée, mais comme c'est moi qui l'ait créée ce n'est pas possible (si j'ai bien compris ce problème peut aussi arriver pour des jeux installé sur l'ordi).
    J'ai aussi lu qu'il fallait réparer je ne sais plus quoi depuis le cmd, ce qui n'a pas marché..., enfin bref toutes les solutions que j'ai trouvé sont sans effet sur mon problème.
    Merci d'avance à tous ceux qui pourront m'aider

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tente d'ajouter des logs en début d'application pour trouver ou ça plante.
    Si ça plante juste avant l'exécution de ton code, commence par écrire un programme ultra simple de type "hello world" et teste. Ajoute des éléments au fur et à mesure et tu pourras trouver d'où vient le problème.
    Cette technique peut être très longue en fonction de la taille de ton programme mais est très efficace en dernier recours.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 626
    Points : 30 684
    Points
    30 684
    Par défaut
    Salut,

    Il faut faire très attention: une compilation réussie ne veut en AUCUN CAS dire que le programme obtenu fonctionnera : cela veut "tout juste" dire que le compilateur a parfaitement compris ce que tu lui disais, et qu'il a réussi à créer le code binaire exécutable correspondant.

    Maintenant, que ce code binaire fasse effectivement ce que tu crois qu'il devrait faire, on ne peut le garantir que si le code (C++) exprime exactement ce que tu voulais dire.

    Si ton programme plante, c'est que, d'une manière ou d'une autre, le code que tu as écrit est "valide" (autorisé par le langage), mais qu'il exprime quelque chose différent de ce que tu crois qu'il veut dire

    La meilleure manière d'éviter ce genre de problème est sans doute d'activer un maximum d'avertissements lors de la compilation -- si possible en faisant en sorte que chaque avertissement soit traité comme une erreur pour forcer la compilation à s'arrêter et te permettre d'y apporter une solution correcte -- car il y a énormément de situations dans lesquelles le compilateur ne peut pas décemment estimer que le code est illégal tout en se rendant malgré tout compte que ce que tu as écrit risque fort de poser problème.

    Et, de toutes évidences, tu te retrouves dans une telle situation

    Maintenant, si ton programme plante directement sans rien te montrer, j'aurais tendance à penser que le problème se situe au niveau du constructeur d'une (ou peut-être de plusieurs ) des classes personnalisées qui doivent être construites pour pouvoir afficher la fenêtre principale, mais il se peut que je me trompe sur ce point

    Sans pouvoir le garantir d'aucune manière à défaut de voir le code que tu as écrit, j'aurais tendance à penser que tu t'es vautré lors de la création d'un pointeur quelconque, et que tu aurais sans doute "quelque part" une donnée membre d'une classe proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Type * monMembre; // je ne connait ni le type réel ni le nom du membre
    qui serait dréé dans un constructeur (ou dans une des fonctions appelées par le constructeur) sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Type * monMembre = new Type;
    ce qui crée une variable locale à la fonction de type Type nommée monMembre qui cache la donnée membre de la classe en question
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre habitué Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Points : 137
    Points
    137
    Par défaut
    citation koala01: Si ton programme plante, c'est que, d'une manière ou d'une autre, le code que tu as écrit est "valide" (autorisé par le langage), mais qu'il exprime quelque chose différent de ce que tu crois qu'il veut dire.
    mais le problème, c'est que tant que je ne sors pas du cadre du Qtcreator, mon programme marche à merveille, et dès que j'essaye d'exécuter directement le .exe (sans passer par qtcreator) en ajoutant les dll nécessaires, ça m'affiche le fameux message; donc je ne pense pas que ce soit un problème du côté du programme, mais plutôt du côté de l'environnement.
    En fait je pensais avoir testé en mode debug, mais non je ne l'avais pas fait (et ça marche effectivement en mode debug, mais seulement sur mon ordi).

    citation dinobogan:Tente d'ajouter des logs en début d'application pour trouver ou ça plante.
    Si ça plante juste avant l'exécution de ton code, commence par écrire un programme ultra simple de type "hello world" et teste. Ajoute des éléments au fur et à mesure et tu pourras trouver d'où vient le problème.

    En fait j'ai retesté un certain nombre de programme, et tous marchent en mode debug, sur mon ordinateur (windows 8.1) mais pas sur les autres ordinateurs (j'ai testé avec windows xp et 7) ce qui est très problématique, alors qu'aucun ne fonctionne en mode release quelque soit l'ordi, ce qui est encore plus problématique, (j'ai testé de la simple fenêtre vide jusqu'à des jeux relativement complexes comme le tetris,...) !
    Sinon, je ne sais pas comment marche ce système de logs ???

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 612
    Points : 43 586
    Points
    43 586
    Par défaut
    Attention, il me semble que les dlls en mode release et en mode debug sont différentes, mais elles portent le même nom.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Membre habitué Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Points : 137
    Points
    137
    Par défaut
    Oui je sais, j'y ai fait bien attention (celles du mode release sont bien moins volumineuses).

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 880
    Points : 219 236
    Points
    219 236
    Billets dans le blog
    122
    Par défaut
    Bonjour,

    Cette erreur est en lien avec les DLL, notamment si vous compilez en 32 bits et que vous utilisez les DLL 64 bits (ou inversement).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Membre habitué Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Points : 137
    Points
    137
    Par défaut
    Mais comment puis-je résoudre cette erreur (je ne me souviens pas avoir choisi de compiler en 64 ou 32 bits, et je ne sais pas comment distinguer les dll 32 ou 64 bits.) ?

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 880
    Points : 219 236
    Points
    219 236
    Billets dans le blog
    122
    Par défaut
    D'où avez vous pris les DLL Qt pour votre application ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Problème d'exécution des programmes sous Qt-Creator
    Par fraisa1985 dans le forum Linux
    Réponses: 2
    Dernier message: 23/03/2010, 11h09
  2. [BP7] Vitesse d'exécution des programmes compilés Pascal
    Par Transgarp dans le forum Turbo Pascal
    Réponses: 27
    Dernier message: 08/04/2008, 21h09
  3. Réponses: 5
    Dernier message: 03/04/2007, 15h51
  4. [UBUNTU] Exécuter des programmes java
    Par hammag dans le forum Ubuntu
    Réponses: 6
    Dernier message: 21/04/2006, 23h50
  5. Problème à l'exécution avec wxWindows (compilé avec BCC55)
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 14/11/2003, 18h04

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