最后20分求解一个疑惑
在一个dll类库工程里的头文件声明了个全局输出函数:
extern "C " __declspec(dllexport) int fnMyDll(int a);
请问如何写才能让调用堆栈的方式是WINAPI?我怎么写都不对。我需要保证函数的命名方式按照c命名。
[解决办法]
extern "C " __declspec(dllexport) int _cdecl fnMyDll(int a);
[解决办法]
extern "C " __declspec(dllexport) int _stdcall fnMyDll(int a);
[解决办法]
WINAPI调用方式是__stdcall,而传统C的调用方式为__cdecl,楼主自己选择。
[解决办法]
1:extern "C " __declspec(dllexport) int _stdcall fnMyDll(int a);导出函数名会变
名字大概如下_fnMyDll@1
2:extern "C " __declspec(dllexport) int _cdecl fnMyDll(int a);导出函数名不变
如果你想用_stdcall 方式,函数名又不变,用dll导出文件 ".def "文件
1:自己先建一.def文件
文件格式参看msdn: ms-help://MS.MSDNQTR.2003FEB.2052/vccore/html/_core_module.2d.definition_files.htm
2:然后在项目设置中设置您的模块定义文件为您的.def文件,具体设置参看MSDN:
ms-help://MS.MSDNQTR.2003FEB.2052/vccore/html/_core_.2f.DEF.htm