|
编写DLL中的一个疑惑 ?
使用vc6.0开发,VC++默认采用__cdecl的调用方式。
C方式编译下:
__cdecel 函数修饰符格式"_函数名"
__stdcall函数修饰符格式"_函数名@参数字节数"
dll中这样声明导出函数
extern "C" int __declspec(dllexport) add(int x, int y);
导出的函数名应该是 _add,实际却是 add,与规则不符,为什么。
extern "C" int __declspec(dllexport) __stdcall add(int x, int y);
导出的函数名是 _add@8与规则相符。
__stdcall还有就是stdcall前一个下划线或是两个下划线都编译正常,这是怎么回事 ? |
|