Question

J'ai une bibliothèque C ++ et une application C ++ qui essaient d'utiliser les fonctions et les classes exportées de la bibliothèque. La bibliothèque se construit bien et l'application se compile mais ne parvient pas à se lier. Les erreurs que je reçois suivent ce formulaire:

  

app-source-file.cpp :(. text + 0x2fdb): référence non définie à `lib-namespace :: GetStatusStr (int) '

L'éditeur de liens semble résoudre parfaitement les classes de la bibliothèque, mais les fonctions libres et les données exportées (telles qu'une table de correspondance en cosinus) entraînent invariablement l'erreur ci-dessus.

J'utilise Ubuntu 8.04 (Hardy) et il est à jour avec les derniers packages Ubuntu.

La commande permettant de lier la bibliothèque est (avec les autres bibliothèques supprimées):

g++ -fPIC -Wall -O3 -shared -Wl,-soname,lib-in-question.so -o ~/project/lib/release/lib-in-question.so

La commande permettant de lier l'application est (avec les autres bibliothèques supprimées):

g++ -fPIC -Wall -O3  -L~/project/lib/release -llib-in-question -o ~/project/release/app-in-question

Enfin, il apparaît (du mieux que je puisse dire) que les symboles en question sont correctement exportés:

nm -D ~/project/lib/release/lib-in-question.so | grep GetStatusStr --> U _ZN3lib-namespace12GetStatusStrEi
Était-ce utile?

La solution

le U précédant _ZN3lib-namespace12GetStatusStrEi dans la sortie nm indique que le symbole est non défini dans la bibliothèque.

Peut-être qu'il est défini dans le mauvais espace de noms: on dirait que vous l'appelez dans lib-namepace mais vous pouvez le définir dans un autre.

Autres conseils

Cela fait un moment, mais si vous spécifiez une bibliothèque avec l'option -l, vous n'avez pas à ignorer le préfixe de la bibliothèque?

(J'ai changé le nom de "lib-in-question.so" "en" libfoobar.so "pour faciliter la lecture de l'exemple ci-dessous.

g++ -fPIC -Wall -O3  -L~/project/lib/release -lfoobar

ou

g++ -fPIC -Wall -O3  ~/project/lib/release/libfoobar.so
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top