{"id":32,"date":"2008-04-01T15:52:31","date_gmt":"2008-04-01T15:52:31","guid":{"rendered":"http:\/\/smarinier\/retrouver-le-nom-d-une-fonction-c-demangle\/"},"modified":"2008-04-01T15:52:31","modified_gmt":"2008-04-01T15:52:31","slug":"retrouver-le-nom-d-une-fonction-c-demangle","status":"publish","type":"post","link":"https:\/\/www.smarinier.net\/retrouver-le-nom-d-une-fonction-c-demangle\/","title":{"rendered":"Retrouver le nom d&rsquo;une fonction C++ (demangle)"},"content":{"rendered":"<p>Parfois , lors de l&rsquo;\u00e9dition de lien d&rsquo;un programme, ou bien encore lors de son lancement, il peut arriver qu&rsquo;une erreur fasse mention d&rsquo;une fonction C++ au nom improbable:<\/p>\n<p><ins><strong>Exemple:<\/strong><\/ins><\/p>\n<pre> dyld: lazy symbol binding failed: Symbol not found: __ZN7Indexer16CrawlPatternListC2Ev  Referenced from: \/opt\/albertqa\/libexec\/libalbcore.dylib  Expected in: flat namespace<\/pre>\n<p>Pour retrouver quelle est cette fonction que le compilateur n&rsquo;a pas correctement li\u00e9e (ceci intervient tout de m\u00eame fr\u00e9quemment avec le compilateur GCC modifi\u00e9 par Apple \ud83d\ude41 ), il suffit d&rsquo;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&rsquo;environnement de d\u00e9veloppement install\u00e9&nbsp;: <strong>c++filt<\/strong><\/p>\n<p><ins><strong>Exemple:<\/strong><\/ins><\/p>\n<pre> c++filt __ZN7Indexer16CrawlPatternListC2Ev  Indexer::CrawlPatternList::CrawlPatternList()<\/pre>\n<pre> c++filt __ZNK7Indexer16CrawlPatternList5MatchERKN3WWW3URLE  Indexer::CrawlPatternList::Match(WWW::URL const&amp;) const<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Parfois , lors de l&rsquo;\u00e9dition de lien d&rsquo;un programme, ou bien encore lors de son lancement, il peut arriver qu&rsquo;une erreur fasse mention d&rsquo;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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-32","post","type-post","status-publish","format-standard","hentry","category-astuces"],"_links":{"self":[{"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/posts\/32","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/comments?post=32"}],"version-history":[{"count":0,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/posts\/32\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/media?parent=32"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/categories?post=32"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.smarinier.net\/%77%70%2d%6a%73%6f%6e\/wp\/v2\/tags?post=32"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}