Possible Duplicate:
How do I stop name-mangling of my DLL's exported function?
I have a DLL that is written in C++. The exported function names need to be unmangled. For example, int MyFunc( int Param1, int Param2 ); needs to appear to an outside application trying to call the library function simply as MyFunc. However, when I look at it using Dependency Walker, it looks like _MyFunc@8. This is how I have it declared in C++:
extern "C" __declspec(dllexport) int WINAPI MyFunc( int Param1, int Param2 );
I thought the extern "C" would do the trick. How do I get rid of the mangling? Thanks.
Ways to get rid of mangling: (assuming MSVC is the build environment)
Export via a .DEF file.
Export as extern “C” ensuring that the __cdecl calling convention is used. __stdcall prepends the _ and postpends the @ on dll exported functions even when extern “C” is used.
Export using a #pragma directive. You need to pass the fully mangled name on the other side of this.
__FUNCDNAME__is a useful directive to put in a macro in a function to list its decorated name,