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
Catégories : Astuces

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *