为什么微软的__stdcall函数不乱名?
以下面这个函数为例:
extern "C" __declspec(dllexport) void DisplayD(int x)
{
std::cout<<x;
}
这样编译出来的DLL,用dumpbin /exports查看,函数名没有乱,正常
改成这样:
__declspec(dllexport) void DisplayD(int x),
函数名就乱了,虽然在导入模块的时候照着那个乱乱的函数名可以成功调用,但是这样很不爽
再改成这样,加一个__stdcall修饰符:
extern "C" __declspec(dllexport) void __stdcall DisplayD(int x)
函数名也乱了,说明__stdcall的优先级比extern "C要高啊,盖掉了extern "C"
我想问的是,为什么那些WINAPI的函数没有乱码,没有看到有DEF文件,是不是因为它们都是用C写的缘故?
在C里编译是不会有函数名乱乱的现象的是吗?
如果我拿到一个DLL,全是乱乱的函数名,难道我也只有被迫用乱乱的函数名了吗?有没有其它办法能够使用好好的名?