Название функции искажается. _cdecl соглашение

0

Этот вопрос связан с изменением имени при экспорте функций в DLL. Microsoft по этой ссылке говорит, что

Символ подчеркивания (_) присваивается именам, кроме случаев, когда экспортируется функция __cdecl, использующая C-ссылку.

ссылка: http://msdn.microsoft.com/ru-ru/library/zkwh89ks.aspx

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

Теги:
dll
visual-c++
dllexport

1 ответ

0

extern "C" void Foo (int) приведет к Foo. C только экспортирует функции без mangeling, используя их имя функции

  • 0
    Можете ли вы связать документ или что-то, где это указано? Поскольку msdn говорит:> Для функций C или функций, которые объявлены как extern "C", это включает в себя украшение для конкретной платформы, основанное на соглашении о вызовах. Так что это означает, что есть украшение. msdn.microsoft.com/en-us/library/3y1sfaz2.aspx
  • 0
    publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/… под управлением именами (только для C ++) Чтобы запретить компилятору C ++ искажать имя функции, вы можете применить внешний указатель связи "C" к объявлению или декларациям , как показано в следующем примере: extern "C" {int f1 (int); int f2 (int); int f3 (int); }; Это объявление сообщает компилятору, что ссылки на функции f1, f2 и f3 не должны быть искажены.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню