动态连接库(一)

来源:互联网 发布:java对象相等compare 编辑:程序博客网 时间:2024/05/16 07:09

1. 用在什么地方

多个应用程序共享代码和数据。
在钩子程序过滤系统消息时必须使用动态连接库
设备驱动程序必须是动态连接库
如果要在对话框编辑器中使用自己定义的控件,也必须使用动态连接库
动态连接库以一种自然的方式将一个大的应用程序划分为几个小的模块,有利于小组内部成员的分工与合作。而且,各个模块可以独立升级。如果小组中的一个成员开发了一组实用例程,他就可以把这些例程放在一个动态连接库中,让小组的其他成员使用。
为了实现应用程序的国际化,往往需要使用动态连接库。使用动态连接库可以将针对某一国家、语言的信息存放在其中。对于不同的版本,使用不同的动态连接库。在使用AppWizard生成应用程序时,我们可以指定资源文件使用的语言,这就是通过提供不同的动态连接库实现的。

类型:
用户动态连接库:一般采用C语言编写
MFC扩展类库:采用ATL MFC 类库

2. 如何创建
新建动态连接库工程
开发好相关接口
修改def文件,添加EXPORTS函数
编译生成Dll

3. 如何使用
将编译好的dll复制到程序debug(release)目录
定义全局dll句柄,和应用Dll中的接口(函数定义时注意:dll 中的接口都是采用回调执行,采用指针函数)
eg: HINSTANCE hDll;
typedef int (*funcname)(int);
funcname func1;
加载dll句柄,和接口函数
eg: hDll = LoadLibrary("abc.dll");
func1 = (funcname)GetProcAddress(hDll,"funcname");
接下来可以调用了。
eg:func1(params);