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

 C++ Discussion :

Exécuter mon .exe sans code::blocks => erreur dll !


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut Exécuter mon .exe sans code::blocks => erreur dll !
    Bonjour, je voudrais juste exécuter un un fichier exécutable généré avec code::blocks et sans erreurs.
    Le fichier est dans \obj\debug\*.exe et j'ai une erreur de dll manquante, je comprends pas.

    Nom : error_exe.JPG
Affichages : 3111
Taille : 29,9 Ko

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    #include "ia1.h"
     
    using namespace std;
    int z,i,code,cpt,a,b;
    //int code=84;
     
    int main()
    {
        a=0;
        b=100;
        cpt=0;
        time_t t;
        srand ((unsigned) time (&t));
        code = rand ()% 100;
        cout<<"Bienvenue au Loto 2006"<<endl;
        for (i=0;i<=10;i++)
        {
            cout<<"Choisis un nombre entre "<<a<<" et "<<b<<endl;
            cpt++;
            saisie ();
            verify (z);
        }
        cout<<"Perdu !"<<endl;
        system ("pause");
        system("exit");
        return 0;
    }
     
    int saisie (void)
    {
        cin>>z;
    }
     
    void verify (int y)
    {
        if (y==code)
        {cout<<"Bravo tu as gagné en "<<cpt<< " coups"<<endl;
        a=0;b=100;cpt=0;cout<<"\a";
        system ("pause");system ("cls");main ();}
        if (y<code)
        {a=y;}
        if (y>code)
        {b=y;}
    }

  2. #2
    Invité
    Invité(e)
    Par défaut _ _ _
    Je pense avoir trouvé la solution:
    http://www.solvusoft.com/fr/files/ma...c-s-dw2-1-dll/

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Merci pour l'info mais il faut installer un logiciel pseudo wouindose et qui trouve 3000 erreurs et qui veut les corriger tout de suite; je n'ai pas trop confiance, existerait-il une autre solution sans avoir à installer un logiciel tierce?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    As-tu essayé de réinstaller Code::Blocks ? L'exe est-il exécutable en dehors de l'IDE ?
    Ton programme est simplissime et n'utilise rien, aucune raison que son exécution échoue.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Non, pas en dehors de l'IDE code::blocks. Quand je compile&exécute depuis code::blocks, ok mais si je veux l'exécuter depuis son *.exe dans debug\ il me mets tout de suite l'ereur en photo et même si code::blocks est fermé!
    Par contre j'ai déjà bien galéré à installer code::blocks ET son "mingw" qui va avec juste pour pouvoir exécuté le "Hello world", alors suis-je vraiment obliger de dé-ré-installer code::blocks pour voir si ça marche?

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Tu dois avoir cette DLL quelquepart dans le répertoire de mingw. Copie-là et colle là dans le même répertoire que ton exécutable, ça devrait bien se passer.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Oui, voilà, ça fonctionne. Cette librairie était bien dans mingw\bin mais il a fallu que je rajoute une autre dll aussi puisque j'avais la même erreur avec cette nouvelle dll.
    Je devrais donc toujours accompagner mon fichier .exe de ces deux dll si je veux qu'il s'exécute correctement?.

    Nom : error2.JPG
Affichages : 2829
Taille : 84,0 Ko

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par boy30 Voir le message
    Oui, voilà, ça fonctionne. Cette librairie était bien dans mingw\bin mais il a fallu que je rajoute une autre dll aussi puisque j'avais la même erreur avec cette nouvelle dll.
    Je devrais donc toujours accompagner mon fichier .exe de ces deux dll si je veux qu'il s'exécute correctement?.
    En un mot : oui...

    En un peu plus d'un mot : libgcc_s_dw-x.y.dll est une dll qui fourni certaines fonctionnalités fournies par gcc pour la gestion générale dont tu ne dispose que parce que tu as installé MinGW. libstdc++-6.dll est, quant à elle, la dll qui fournit les fonctionnalités offertes par la bibliothèque standard de C++, spécialement compilée pour pouvoir être utilisée par les programmes compilés avec Gcc (MinGW).

    Si ton programme s'exécute sous Code::Blocks mais pas lorsque tu essaye de le lancer en dehors de Code::blocks, c'est parce que Code::Blocks rajoute automatiquement le chemin vers le dossier bin de MinGW aux chemins utilisés pour la recherche des dll (et des autres exécutables) mais que ce dossier n'a pas été rajouté à la variable PATH connue par windows (chose à laquelle on peut remédier assez facilement, ceci dit )

    Une solution serait de veiller à utiliser la version statique de ces bibliothèques (en ajoutant les options -static-libgcc et -static-libstdc++ aux options d'édition de liens), afin de ne plus avoir besoin des dlls, mais dont le prix à payer est un exécutable (parfois beaucoup) plus gros.

    Notes que, de manière générale, c'est un problème que tu risques d'avoir avec de nombreuses bibliothèques (en gros : toutes celles qui sont disponibles sous la forme de dll) car les dll ont pour but de fournir le code exécutable de la bibliothèque sans qu'il ne soit nécessaire de placer ce code dans l'application générée. Le but de la manoeuvre étant de te permettre de mettre les bibliothèques à jour sans forcément avoir besoin de recompiler l'application entière.
    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

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut MERCI ! ; en effet copie des dll depuis MinGW/bin dans le bin release et debug résoud ce PB sans ajouter les
    Citation Envoyé par koala01 Voir le message
    Salut,
    En un mot : oui...

    En un peu plus d'un mot : libgcc_s_dw-x.y.dll est une dll qui fourni certaines fonctionnalités fournies par gcc pour la gestion générale dont tu ne dispose que parce que tu as installé MinGW. libstdc++-6.dll est, quant à elle, la dll qui fournit les fonctionnalités offertes par la bibliothèque standard de C++, spécialement compilée pour pouvoir être utilisée par les programmes compilés avec Gcc (MinGW).

    Si ton programme s'exécute sous Code::Blocks mais pas lorsque tu essaye de le lancer en dehors de Code::blocks, c'est parce que Code::Blocks rajoute automatiquement le chemin vers le dossier bin de MinGW aux chemins utilisés pour la recherche des dll (et des autres exécutables) mais que ce dossier n'a pas été rajouté à la variable PATH connue par windows (chose à laquelle on peut remédier assez facilement, ceci dit )

    Une solution serait de veiller à utiliser la version statique de ces bibliothèques (en ajoutant les options -static-libgcc et -static-libstdc++ aux options d'édition de liens), afin de ne plus avoir besoin des dlls, mais dont le prix à payer est un exécutable (parfois beaucoup) plus gros.

    Notes que, de manière générale, c'est un problème que tu risques d'avoir avec de nombreuses bibliothèques (en gros : toutes celles qui sont disponibles sous la forme de dll) car les dll ont pour but de fournir le code exécutable de la bibliothèque sans qu'il ne soit nécessaire de placer ce code dans l'application générée. Le but de la manoeuvre étant de te permettre de mettre les bibliothèques à jour sans forcément avoir besoin de recompiler l'application entière.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/10/2007, 13h24
  2. Exécuter un .exe sans Delphi
    Par Tomimie dans le forum Delphi
    Réponses: 11
    Dernier message: 01/06/2007, 11h42
  3. Réponses: 1
    Dernier message: 20/04/2007, 09h37
  4. Réponses: 4
    Dernier message: 16/11/2006, 21h49
  5. Avoir le chemin de mon exe, sans le nom de l'exe.
    Par yosthegost dans le forum Delphi
    Réponses: 4
    Dernier message: 31/05/2006, 17h05

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