Using DUMPBIN
on a C++ .DLL (or IMPLIB .LIB file) with /EXPORTS or /IMPORTS I see syntax in the output like the following:
Exports
ordinal name
_CloseConduit@4
_ConduitPort
_GetConduitVersion@4
_GetStatusConduit@8
_GetTimeout@0
_OpenConduit@4
I could not find anywhere a definition of what the @n
designation means. I finally have concluded that it's the number of bytes of argument data, but it leaves me a little nervous depending on inference from a few examples. Can anyone point to a reference, or say with any authority, what the number here means?
You are correct to conclude that
@n
indicates the number of bytes for the function parameters. You can find the relevant MSDN documentation here and here.In particular, that is how MSVC decorates
extern "C" __stdcall
functions in C++. Note that this is technically implementation defined and other compilers do decorate this differently.For example, MinGW-gcc decorates it without the leading underscore. Embarcadero's compiler(formerly Borland) does not decorate
__stdcall
functions at all while Digital Mar's compiler uses the same decoration scheme as MSVC.