动态链接库编程

动态链接库编程

ID:27067380

大小:282.01 KB

页数:22页

时间:2018-11-30

动态链接库编程_第1页
动态链接库编程_第2页
动态链接库编程_第3页
动态链接库编程_第4页
动态链接库编程_第5页
资源描述:

《动态链接库编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第12章动态链接库编程在Windows操作系统环境中,动态链接库技术有着广泛的应用。操作系统的核心功能、系统服务、应用程序服务等多数是由一组动态链接库实现的。在Windows应用程序中使用动态链接库有很多的好处。最主要的一点说是它可以使得多个应用程序共享一段代码,从而可以大幅度的降低应用程序的资源开销,同时很缩小了应用程序的最终执行代码的大小。12.1基本概念在开发和使用动态链接库之前,有必要了解一下动态链接库的相关概念。只有了解了动态链接库的结构和工作机制,才能灵活有效地开发和使用它。12.1.1动态

2、链接库的概念动态链接库(DLL,Dynamic-LinkLibrary)也是一种可执行文件,只不过它不能像普通的EXE文件那样可以直接运行,而是用来为其它可执行文件(包括EXE文件和其它DLL)提供共享函数库。使用DLL的应用程序可以调用DLL中的导出函数,不过在应用程序本身的执行代码中并不包含这些函数的执行代码,它们经过编译和链接之后,独立的保存在DLL中。与动态链接库相对应,还有一种称为静态连接库的函数库,二者的主要区别就是在使用方法上。12.1.2动态链接库的优点DLL在Windows编程中得到了

3、广泛的应用。WindowsAPI函数中的相当部分就是由一组DLL所提供的,这些DLL从安装Windows起就存在于系统中了。事实上,前面几章早就在使用DLL进行编程了,只不过,所使用的DLL都是现成的,并且所有调用DLL的操作都由VisualC++的编译和链接程序替用户完成了。12.1.3VisualC++6.0可开发的DLLVisualC++6.0支持多种DLL,包括:非MFCDLL、静态链接到MFC的常规DLL、动态链接到MFC的常规DLL和MFC扩展DLL。其中,非MFCDLL也称为Win32DL

4、L,其内部不采用MFC类库结构,导出函数一般为标准的C接口。它能被非MFC或MFC编写的应用程序所调用。(具体内容请参照本书)12.1.4DLL文件的组成一个发布的可供使用的动态链接库,一般包含三个文件:包含文件(.H)、导入库文件(.LIB)和实际代码文件(.DLL)。(具体内容请参照本书)12.2DLL的创建与调用本节以非MFCDLL(Win32DLL)为例来讲解DLL的结构和导出方法,并介绍创建和使用DLL的方法和步骤。12.2.1Win32DLL的创建与MFC应用程序框架的创建相似,使用AppW

5、izard可以方便地创建一个Win32DLL框架。本节将利用AppWizard创建一个Win32DLL,该DLL提供了一个导出函数FactorialFun,实现正整数的阶乘运算(如,5!=5*4*3*2*1)。(具体内容请参照本书)12.2.2DLL的导出DLL文件和EXE文件都属于可执行文件,不同的是DLL文件包含了一个导出表,导出表中给出了可以从DLL中导出的所有函数的名字。外部可执行程序只能访问包括在DLL的导出表中的函数,DLL中的其它函数是私有的,不能为外部可执行程序所访问。从DLL中导出函数

6、有两种方法:在定义函数时使用关键字_declspec(dllexport);在创建DLL时使用模块定义(.DEF)文件。(具体内容请参照本书)12.2.3应用程序链接DLL链接应用程序到DLL也有两种方法:隐式链接和显式链接。隐式链接又称为静态加载。如果应用程序使用了隐式链接,操作系统在加载应用程序的同时加载应用程序所使用的DLL。显式链接又称为动态加载。使用动态加载的应用程序必须在代码中明确的加载所使用的DLL,并使用指针来调用DLL中的导出函数,在使用完毕之后,应用程序必须卸载所使用的DLL。(具体

7、内容请参照本书)12.3MFC常规DLL的创建与使用前面已经介绍了普通DLL(Win32DLL)的开发和使用,下面将要介绍基于MFC的DLL的开发。MFCDLL能够使用MFC类库,从而能在MFC的帮助下开发出功能强大的模块。基于MFC的DLL有MFC常规DLL和MFC扩展DLL,本节将介绍MFC常规DLL的创建与使用。12.3.1基本概念MFC常规DLL,顾名思义,其包含两方面的含义。首先,它是MFCDLL,即可以在DLL的内部使用MFC类库。其次,它是常规的,即它不同于MFC扩展DLL,在其内部虽然可

8、以使用MFC,但它与应用程序的接口不能是MFC,如它不能导出一个MFC类的派生类。MFC常规DLL有两种类型:静态链接到MFC库的规则DLL(RegularDLLwithMFCstaticallylinked)和动态链接到MFC库的规则DLL(RegularDLLusingsharedMFCDLL)。从开发角度讲,两者的开发过程一样的。(具体内容请参照本书)12.3.2MFC常规DLL的创建同样,使用AppWizard可以方便地创建一个MF

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。