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

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

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