Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MinGW] Exécution d'un programme hors IDE : erreur

erreur : __gxx_personality_v0 compilé avec gcc

Sujet résolu
    30 mars 2016 à 22:29:14

    Bonjour,

    Voila mon problème : j'utilise la bibliothèque SFML et je compile avec gcc (dw2 il me semble). Sous code::block tout fonctionne le programme se compile sans aucune erreur, mais lors que je l'exécute hors l'IDE il m'indique l'erreur suivante:

    "Le point d'entrée de procédure __gxx_personality_v0 est introuvable dans la bibliothèque de liens dynamiques..."

    J'ai déjà vue ce sujet être traités sur des forums mais le fait qu'il s'exécute bien sur code::block et non hors IDE me laisse quelque peu perplexe...

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2016 à 23:09:56

      Avec le même compilo, (À faire attention Code::Blocks utilise son propre répertoire d'exécution), normalement tu vas avoir le même résultat que si tu entre les mêmes commandes dans la console.

      Pour voir les commandes va dans le "Build log". Sinon, entre les une par une et regarde où ça coince.

      Vu ton erreur ça semble être au niveau du "linker"  donc la dernière commande .... c'est quoi ce compilo français XD

      -
      Edité par Maeiky 30 mars 2016 à 23:12:55

      • Partager sur Facebook
      • Partager sur Twitter
      CWC, pour compiler facilement du C++. CW un nouveau langage intuitif. GZE - Un moteur C++/Cw
        6 avril 2016 à 19:30:09

        Merci de ta réponse.

        Seulement je n'utilise pas de console...  enfin tout ce que je fais c'est de demander à code::block de compiler et ensuite de mettre les dll dans le dossier bin. Si le problème est au niveau du Linker je pense ne rien pouvoir faire mise a part si il faut ajouter des options de compilations. Même mes programmes sans la SFML avec juste la bibliothèque standard ne s'exécute pas et affiche la même erreur.

        Je laisse cette question en suspens vue que j'aurais un nouvelle ordinateur et que je pourrais me servir de nouveau de visual studio mais j'aimerais tout de même savoir pourquoi ca ne fonctionne pas... (après cela peux provenir de mon ordinateur...)

        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2016 à 20:57:39

          Salut,

          Perso, un message du genre de "le point d'entrée de procédure machin est introuvable", moi, ca me fait furieusement penser à une dll qui n'a pas été trouvée ou qui n'est pas compilée avec les bonnes options / le bon compilateur.

          Les causes probables sont :

          • la dll requise se trouve dans un dossier spécifique, défini au niveau de l'IDE, mais non au niveau de la variable PATH
          • la dll requise a été générée avec Visual studio et on essaye de l'utiliser avec Gcc (ou vice versa), ce qui est souvent le cas lorsqu'on télécharge la version compilée de la bibliothèque sur un site quelconque
          • la dll requise est en version 32bits alors que l'on a compilé une application 64bits (ou vice versa), à moins que les deux versions de la dll n'existent, mais que seul le dossier contenant la "mauvaise" version ne se trouve dans la variable PATH

          A

          • Partager sur Facebook
          • Partager sur Twitter
          Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
            7 avril 2016 à 1:09:23

            Salut, comme le dit koala01 vérifie que toutes les DLL requises pour ton projet sont bien dans le même dossier que ton .exe
            Certaines DLL, comme  "libgcc_s_sjlj-1", "libgcc_s_dw2-1" etc... sont souvent nécessaire suivant ton compilateur.
            Cependant lors de l’exécution un message devrait t'indiquer la lib manquante ...
            • Partager sur Facebook
            • Partager sur Twitter
            « Les détails font la perfection, et la perfection n'est pas un détail » Léonard de Vinci
              7 avril 2016 à 19:30:06

              Merci de vos réponses,

              Mais poser vos crayons... J'ai copié toutes les DLLs de mingw et ça a fonctionné... il lui manquait libstdc++-6.dll,maintenant ça semble assez claire l'erreur.

              Toutefois j'aimerais me débarrasser de ses dépendance (libstdc++-6.dll et libgcc_s_dw2-1.dll) est-ce possible ? En insérant dans la variable PATH le chemin vers les DLLs sur mon ordinateur je n'aurais plus besoin de les mettre dans le dossier de l'exécutable, non ?

              • Partager sur Facebook
              • Partager sur Twitter
                7 avril 2016 à 19:46:11

                En effet...

                La seule chose, c'est que si tu décide de diffuser ton programme (car, oui, c'est souvent l'objectif final des "vrais" projets :D ), tu risques fort d'oublier de rajouter les différentes dll à ton archive, et tu sera submergé de rapports de bug disant que "le programme plante, et je ne sais pas pourquoi" :D

                • Partager sur Facebook
                • Partager sur Twitter
                Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                  7 avril 2016 à 19:59:25

                  J'avais mal compris la question XD


                  tintin92350 a écrit:

                  Toutefois j'aimerais me débarrasser de ses dépendance (libstdc++-6.dll et libgcc_s_dw2-1.dll)


                  Tu dois ajouter la libstd en statique avec -static-libstdc++ (linker) ou bien tu prend la version TDM de mingw
                  • Partager sur Facebook
                  • Partager sur Twitter
                  CWC, pour compiler facilement du C++. CW un nouveau langage intuitif. GZE - Un moteur C++/Cw
                    7 avril 2016 à 20:02:05

                    :D Oui ce serait embêtent... mais bon je suis encore loin de vouloir diffuser mes programmes. Une bonne partie d'entre eux me sont destiné, juste des petits projets par ici et par là
                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 avril 2016 à 20:04:35

                      Merci de ta réponse Maeiky

                      Maeiky a écrit:

                      J'avais mal compris la question XD

                      ou la question était mal posé...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 mai 2016 à 4:25:36

                        tintin92350 a écrit:

                        Merci de vos réponses,

                        Mais poser vos crayons... J'ai copié toutes les DLLs de mingw et ça a fonctionné... il lui manquait libstdc++-6.dll,maintenant ça semble assez claire l'erreur.

                        Toutefois j'aimerais me débarrasser de ses dépendance (libstdc++-6.dll et libgcc_s_dw2-1.dll) est-ce possible ? En insérant dans la variable PATH le chemin vers les DLLs sur mon ordinateur je n'aurais plus besoin de les mettre dans le dossier de l'exécutable, non ?


                        Hey ! Normalement la l'option " -static-libstdc++" permet cela lorsque tu compile avec g++.
                        Exemple : "g++ -o cpp5.exe cpp5.cpp -std=c++14 -static-libstdc++"

                        -
                        Edité par Hip (Zeos) 6 mai 2016 à 4:27:01

                        • Partager sur Facebook
                        • Partager sur Twitter
                        « Les détails font la perfection, et la perfection n'est pas un détail » Léonard de Vinci

                        [MinGW] Exécution d'un programme hors IDE : erreur

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown