首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

最后20分求解一个疑惑,该如何处理

2014-06-11 
最后20分求解一个疑惑在一个dll类库工程里的头文件声明了个全局输出函数:externC __declspec(dllexport)

最后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


热点排行