Я работаю над библиотекой DLL, которая будет использоваться на другом языке (поэтому нет импортных библиотек и включая заголовки dll), используя конвенцию вызова _stdcall. Проблема в том, что VC ++, кажется, всегда делает некоторые украшения имени для своих экспортируемых символов. Все ссылки, которые я когда-либо видел, говорят, что используют extern "C", но, похоже, это все еще оставляет мне подчеркивание в начале и знак "@" после экспортированного имени.
Хуже всего то, что автоматизированное средство загрузки расширений dll на целевом языке, по сути, выполняет "func_name = GetProcAddress (dll," func_name ")", поэтому при использовании недекорированного имени GetProcAddress происходит сбой, а при использовании декорированного имени он жалуется на недопустимое имя переменной (@ не допускается): (
Как я могу сделать так, чтобы VC ++ экспортировал что-то без именных украшений?
extern "C" __declspec(dllexport) int __stdcall test(int x, const char *str);
dumpbin.exe
00011366 _test @ 8 = @ ILT + 865 (_test @ 8)