(带程序 页数:字数:)摘 要: DLL封装了共享资源和代码,在开发以Windows为平台的应用程序时,使用DLL技术开发项目,可简化项目管理,提高开发速度。在创建和使用Windows下动态链接库,掌握DLL技术很有必要。 关键词:DLL;动态链接库;导出函;隐式链接;显式链接
目录:
1 动态链接库的创建 1.1 创建非MFC动态库 1.2 创建MFC动态库 2 动态链接库的使用 2.1 隐式链接 2.2 显式链接
1 动态链接库的创建 在VC++6.0开发系统的菜单“File”中单击“New”,在弹出窗口中选择Project选项卡,可以看到有Win32 Dy-name-Link Library和MFC AppWizard两种方式创建动态链接库。前者用来创建不与MFC(微软基础类库)链接的动态链接库,称为非MFC动态库,后者创建与MFC链接的动态链接库,称为MFC动态库。 1.1 创建非MFC动态库 选择Win32 Dynamic-Link Library,在Project name编辑框输入工程名:MyDLL,创建一个空的非MFC工程。 要使DLL中包含的某些函数和数据能够被外部应用程序调用,就应该在创建DLL时,指出这些函数(数据)是可导出的,称为导出函数(数据)。导出函数有两种方法,一种是在声明函数原型语句中的函数类型关键字左边添加导出关键字_declspec(dlhxport);另一种是使用模块定义文件.def。 (1)使用导出关键字declapee(duexport)导出函数 在前面创建的空工程中加入MyDLL.h、MyDL、cpp两个文件, 头文件MyDLL.h.代码如下:_declspec(dllexport)int Add(int x,int y); 实现文件MyDLL.cpp代码如下:#include<stdio.h> #include“MyDLL.h” int Add(int x,int y) { return(x+y);} 在工程中有一个被导出函数(输出函数)Add(),用来进行加法运算。 编译、连接工程MyDLL,成功后,可以看到debug目录下生成了动态库MyDLL.d11和引入库MyDLL.Iib这两个文件。引入库文件中存有对应DLL的文件名和输出函数名等(MyDLL、Add等),动态库文件中存有实际的函数和数据。 (2)使用模块定义文件.def导出函数 对方法(1)中建立的工程,删除文件MyDLL.h,保留文件MyDLL.cpp,再加入文本文件MyDLL.def作为模块定义文件。在MyDLL.def中输入代码如下: ;MyDLL.def LIBRARY MyDLL EXPORTS Add 一个模块定义文件至少要有两条语句,一条是LI-BRARY语句,用它指出DLL的名字,该语句必须位于除注释语句外的其它语句之前;另一条是EXPORTS语句,在它之下列出输出函数的名字。
|