web-dev-qa-db-fra.com

Erreur de lien "référence non définie à` __gxx_personality_v0 '"et à g ++

Duplicate possible:
Symbole non défini ___gxx_personality_v0 sur le lien

J'ai un problème avec le programme suivant.

// fkt.cpp

#include "fkt.h"

int add2(int a, int b)
{
    return a+b;
}

Et l'en-tête:

// fkt.h

int add2(int a, int b);

Maintenant, je compile ceci avec:

g++ -c fkt.cpp

Maintenant, je lance nm et récupère:

00000000 T _Z6add2ii
         U __gxx_personality_v0

Lorsque je veux utiliser la fonction où que je sois:

(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'

Comment puis-je résoudre ce problème? (J'utilise bunt Linux.)

72
develhevel

Si g++ donne toujours une erreur Essayez d'utiliser:

g++ file.c -lstdc++

Regardez ce post: Qu'est-ce que __gxx_personality_v0 pour?

Assure-toi -lstdc++ est à la fin de la commande. Si vous le placez au début (c’est-à-dire avant le fichier.c), vous pouvez toujours obtenir la même erreur.

109
phoxis

On dirait que vous essayez de créer un lien avec votre fichier objet résultant avec gcc au lieu de g++:

Notez que les programmes utilisant des fichiers objets C++ doivent toujours être liés à g ++ afin de fournir les bibliothèques C++ appropriées. Tenter de lier un fichier objet C++ au compilateur C gcc provoquera des erreurs de "référence indéfinie" pour les fonctions de bibliothèque standard C++:

$ g++ -Wall -c hello.cc
$ gcc hello.o       (should use g++)
hello.o: In function `main':
hello.o(.text+0x1b): undefined reference to `std::cout'
.....
hello.o(.eh_frame+0x11):
  undefined reference to `__gxx_personality_v0'

Source: Introduction à GCC - pour le GNU compilateurs gcc et g ++

62
onteria_