您的位置:首页 > 其它

DLL 导出 导入 调用约定

2011-06-02 20:28 225 查看
导出:

extern "C" _declspec(dllexport) : 表示这个函数是DLL导出函数,可以被外部引用。

导出类 class _declspec(dllexport) classname{...}

AFX_EXT_CLASS

导入:

在应用工程中引用DLL中全局变量的一个更好方法是:
extern int _declspec(dllimport) global; //用_declspec(dllimport)导入

Class _declspec(dllimport) classname 来导入类

调用约定:

1. __stdcall 可让VC 编写的DLL被其他语言编写的程序调用

2. __cdecl C/C++ 调用方式

__stdcall方式与__cdecl对函数名最终生成符号是不同的,而且参数的入栈顺序也不同。

由于不同的调用方式下,可能最终导出的函数名称会有不同的变化(即发生了名字改编),为了防止名字改编,我们还有另一种方式来导出函数方
式(推荐使用) :

3.
用名字定义文件的方式,即增加一个.def文件。
.def文件格式如下:

; Simple.def : 导出DLL函数
LIBRARY Simple
EXPORTS
ShowMessage @ 1

1、注释由“;” 指定,注释不能与语句在同一行。
2、“LIBRARY”语句说明.def文件相应的DLL;
3、“EXPORTS”说明要导出函数的名称。“@ 1”,表示要导出函数的序号为1(在函数调用时,可以用到这个序号)
因此,Simple.def文件的解释是:生成Simple.DLL的动态链接库,其导出ShowMessage函数,该函数的序号为1。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: