GNU C ++ import name mangling [дубликат]

Я думаю, что идеальным решением будет это

if ($(this).hasClass("your_Class")) 
    alert("positive");            
else              
    alert("Negative");
4
задан MSalters 28 June 2012 в 11:58
поделиться

1 ответ

Это довольно прямое оформление идентификатора на работе. Префикс imp_ автоматически генерируется компилятором, он экспортирует указатель на функцию, который позволяет оптимизировать привязку к экспорту DLL. По языковым правилам imp_ имеет префикс ведущего подчеркивания, требуемого, поскольку он живет в глобальном пространстве имен и генерируется реализацией и в противном случае не отображается в исходном коде. Таким образом, вы получаете _imp_.

. Следующее, что происходит, заключается в том, что компилятор украшает идентификаторы , чтобы позволить компоновщику распознавать неверные совпадения. Весьма важно, потому что компилятор не может диагностировать несоответствия декларации между модулями и самостоятельно диагностировать их во время выполнения very .

Во-первых, существует C ++-оформление - очень сложная схема, которая поддерживает перегрузки функций. Он генерирует довольно странные имена, обычно в том числе много? и @ символов с дополнительными символами для аргументов и возвращаемых типов, так что перегрузки недвусмысленны. Затем есть декорация для идентификаторов C, они основаны на вызывающем соглашении. Функция cdecl имеет одно ведущее подчеркивание, функция stdcall имеет лидирующий знак подчеркивания и конечный @n, который позволяет диагностировать несогласованные объявления аргументов, прежде чем они будут дисбаланс стека.

Таким образом, вы получили ошибку компоновщика, потому что вы забыли указать ссылку на C, линкеру было предложено в значительной степени сопоставить его с 64-битным кодом. оформленное имя C ++ с мягко оформленным названием C. Затем вы установили его с помощью extern "C", теперь вы получили единственное добавленное подчеркивание для cdecl, превратив _imp_ в __imp_.

20
ответ дан Hans Passant 26 August 2018 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: