Parfois , lors de l’édition de lien d’un programme, ou bien encore lors de son lancement, il peut arriver qu’une erreur fasse mention d’une fonction C++ au nom improbable:
Exemple:
dyld: lazy symbol binding failed: Symbol not found: __ZN7Indexer16CrawlPatternListC2Ev Referenced from: /opt/albertqa/libexec/libalbcore.dylib Expected in: flat namespace
Pour retrouver quelle est cette fonction que le compilateur n’a pas correctement liée (ceci intervient tout de même fréquemment avec le compilateur GCC modifié par Apple 🙁 ), il suffit d’utiliser une fonction de demanglage (unmangle, ou demangle en anglais). Le petit programme qui fait cela fait partie des GNU Binutils qui se trouve en standard sur un Mac ou sur un Linux, avec l’environnement de développement installé : c++filt
Exemple:
c++filt __ZN7Indexer16CrawlPatternListC2Ev Indexer::CrawlPatternList::CrawlPatternList()
c++filt __ZNK7Indexer16CrawlPatternList5MatchERKN3WWW3URLE Indexer::CrawlPatternList::Match(WWW::URL const&) const
0 commentaire