Question

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?

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top