demangler — возможно ли раскладывать символы C ++ вручную?

Я получаю некоторые ошибки, как это:

dyld: lazy symbol binding failed: Symbol not found: __ZN2nm8RationalIxEC1ERKNS_10RubyObjectE
Referenced from: /Users/jwoods/Projects/nmatrix/lib/nmatrix.bundle
Expected in: flat namespace

dyld: Symbol not found: __ZN2nm8RationalIxEC1ERKNS_10RubyObjectE
Referenced from: /Users/jwoods/Projects/nmatrix/lib/nmatrix.bundle
Expected in: flat namespace

и то же самое для __ZN2nm7ComplexIfEC1ERKNS_10RubyObjectE,

К несчастью, c++filt кажется, не хочет разобраться с этим. Когда я пытаюсь ввести их в C ++ FilterJS онлайн интерфейс, Я получаю «Не искаженный символ C ++».

Я немного озадачен сообщением об ошибке, так как пример c++filtjs дает это _ZN9wikipedia7article8wikilinkC1ERKSs, который представляет wikipedia::article::wikilink::wikilink(std::string const&), Я вижу несколько моделей, среди них ZN#, 7 а также 8 за ::, а также C1ERK потому что я предполагаю, что это некая ссылка на конструктор.

Я предполагаю, что жалуется, что отсутствует один из моих конструкторов для class Rational, такие как Rational::Rational(RubyObject const&), Rational Это шаблон, поэтому мне было бы полезно понять, какая версия отсутствует.

Но вопрос здесь действительно в том, как я могу разобрать руками. знак равно

3

Решение

Символ выглядит как один из произведенных Clang или GCC. Оба эти компилятора используют ABI, основанный на Itanium ABI. Этот документ включает в себя раздел по разборке описывающий, как строятся внешние символы. Если вы усвоите соответствующие правила, вы сможете разобрать имена.

Я не смог найти документ на оригинальном сайте и не знаю, где живет официальный документ.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]