С помощью DUMPBIN
на C ++ .DLL (или IMPLIB .LIB файле) с / EXPORTS или / IMPORTS я вижу синтаксис в выводе, подобный следующему:
Exports
ordinal name
_CloseConduit@4
_ConduitPort
_GetConduitVersion@4
_GetStatusConduit@8
_GetTimeout@0
_OpenConduit@4
Я не мог нигде найти определение того, что @n
обозначение средства. Я наконец-то пришел к выводу, что это число байтов данных аргумента, но это заставляет меня немного нервничать в зависимости от вывода из нескольких примеров. Кто-нибудь может указать на ссылку или сказать с какой-либо властью, что означает число здесь?
Вы правильно сделали вывод, что @n
указывает количество байтов для параметров функции. Вы можете найти соответствующую документацию MSDN Вот а также Вот.
В частности, именно так MSVC украшает extern "C" __stdcall
функции в C ++. Обратите внимание, что это технически определяется реализацией, и другие компиляторы делают это по-разному.
Например, MinGW-GCC украшает его без ведущее подчеркивание. Компилятор Embarcadero (ранее Borland) не украшает __stdcall
работает вообще, в то время как компилятор Digital Mar использует ту же схему оформления, что и MSVC.
Других решений пока нет …