Печать имени функции C ++ на C без оформления

HAL9000 спросил: 12 мая 2018 в 05:11 в: c++

Я пытаюсь создать DLL. Мне сказали сначала распечатать имя функции, используя

../debug>dumpbin /exports demo.dll

Ниже приведен код C ++.

extern "C" __declspec(dllexport) void __cdecl Foo() {
return;
}

Ниже приведено мое def file

LIBRARY 
EXPORTS
Foo

Я хочу, чтобы имя функции было напечатано как

ordinal hint RVA      name      1    0 00011212 Foo = Foo

Вместо этого я вижу:

ordinal hint RVA      name      1    0 00011212 Foo = @ILT+525(Foo)

Как я могу отключить mangling / decoration?

Я видел вопросы, где решение отключает "отладочную информацию" в компоновщике. Я не хочу этого делать. Я новичок на C ++, поэтому не очень хорошо осведомлен. Любая помощь будет оценена по достоинству. Спасибо!

1 ответ

Есть решение
NPE ответил: 12 мая 2018 в 05:24

Здесь не существует кодов имен C ++. Функция, экспортированная из DLL, называется Foo.

@ILT указывает на форму косвенного вызова, используемого в инкрементной привязке (ILT означает "Инкрементная таблица ссылок", а число идентифицирует слот в этой таблице):

https://social.msdn.microsoft. ком / форум / windowsdesktop / EN-US / 6cd9936a-c516-49e0-ba38-ed391669a69a / разборку-операнд-ИЛТ? форум = vcgeneral

HAL9000 ответил: 12 мая 2018 в 05:26
Спасибо за помощь! Я отключил инкрементальную привязку в Visual Studio, и это дало мне "Foo"