第12章动态链接库编程教程文件

上传人:yujic****0329 文档编号:138077373 上传时间:2020-07-13 格式:PPT 页数:22 大小:425KB
返回 下载 相关 举报
第12章动态链接库编程教程文件_第1页
第1页 / 共22页
第12章动态链接库编程教程文件_第2页
第2页 / 共22页
第12章动态链接库编程教程文件_第3页
第3页 / 共22页
第12章动态链接库编程教程文件_第4页
第4页 / 共22页
第12章动态链接库编程教程文件_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《第12章动态链接库编程教程文件》由会员分享,可在线阅读,更多相关《第12章动态链接库编程教程文件(22页珍藏版)》请在金锄头文库上搜索。

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

2、是一种可执行文件,只不过它不能像普通的EXE文件那样可以直接运行,而是用来为其它可执行文件(包括EXE文件和其它DLL)提供共享函数库。使用DLL的应用程序可以调用DLL中的导出函数,不过在应用程序本身的执行代码中并不包含这些函数的执行代码,它们经过编译和链接之后,独立的保存在DLL中。与动态链接库相对应,还有一种称为静态连接库的函数库,二者的主要区别就是在使用方法上。,12.1.2 动态链接库的优点,DLL在Windows编程中得到了广泛的应用。Windows API函数中的相当部分就是由一组DLL所提供的,这些DLL从安装Windows起就存在于系统中了。事实上,前面几章早就在使用DLL进

3、行编程了,只不过,所使用的DLL都是现成的,并且所有调用DLL的操作都由Visual C+的编译和链接程序替用户完成了。,12.1.4 DLL文件的组成,一个发布的可供使用的动态链接库,一般包含三个文件:包含文件(.H)、导入库文件(.LIB)和实际代码文件(.DLL)。(具体内容请参照本书),12.2 DLL的创建与调用,本节以非MFC DLL(Win32 DLL)为例来讲解DLL的结构和导出方法,并介绍创建和使用DLL的方法和步骤。,12.2.1 Win32 DLL的创建,与MFC应用程序框架的创建相似,使用AppWizard可以方便地创建一个Win32 DLL框架。本节将利用AppWiz

4、ard创建一个Win32 DLL,该DLL提供了一个导出函数FactorialFun,实现正整数的阶乘运算(如,5!=5*4*3*2*1)。(具体内容请参照本书),12.2.2 DLL的导出,DLL文件和EXE文件都属于可执行文件,不同的是DLL文件包含了一个导出表,导出表中给出了可以从DLL中导出的所有函数的名字。外部可执行程序只能访问包括在DLL的导出表中的函数,DLL中的其它函数是私有的,不能为外部可执行程序所访问。 从DLL中导出函数有两种方法:在定义函数时使用关键字_declspec(dllexport);在创建DLL时使用模块定义(.DEF)文件。(具体内容请参照本书),12.2.

5、3 应用程序链接DLL,链接应用程序到DLL也有两种方法:隐式链接和显式链接。 隐式链接又称为静态加载。如果应用程序使用了隐式链接,操作系统在加载应用程序的同时加载应用程序所使用的DLL。显式链接又称为动态加载。使用动态加载的应用程序必须在代码中明确的加载所使用的DLL,并使用指针来调用DLL中的导出函数,在使用完毕之后,应用程序必须卸载所使用的DLL。(具体内容请参照本书),12.3 MFC常规DLL的创建与使用,前面已经介绍了普通DLL(Win32 DLL)的开发和使用,下面将要介绍基于MFC的DLL的开发。MFC DLL能够使用MFC类库,从而能在MFC的帮助下开发出功能强大的模块。 基

6、于MFC的DLL有MFC常规DLL和MFC扩展DLL,本节将介绍MFC常规DLL的创建与使用。,12.3.1 基本概念,MFC常规DLL,顾名思义,其包含两方面的含义。首先,它是MFC DLL,即可以在DLL的内部使用MFC类库。其次,它是常规的,即它不同于MFC扩展DLL,在其内部虽然可以使用MFC,但它与应用程序的接口不能是MFC,如它不能导出一个MFC类的派生类。 MFC常规DLL有两种类型:静态链接到MFC库的规则DLL(Regular DLL with MFC statically linked)和动态链接到MFC库的规则DLL(Regular DLL using shared MF

7、C DLL)。从开发角度讲,两者的开发过程一样的。(具体内容请参照本书),12.3.2 MFC常规DLL的创建,同样,使用AppWizard可以方便地创建一个MFC常规DLL框架程序。下面就详细介绍使用AppWizard向导创建MFC常规DLL的过程。,12.3.3 MFC常规DLL创建实例,本节将通过一个具体的实例讲解MFC常规DLL的创建过程。该DLL的导出函数实现创建一对话框。(具体内容请参照本书) 3创建DLL导出函数 创建导出函数需要新建一个源文件,执行“File”“New”菜单命令,利用New对话框为工程添加一C+源文件,命名为“DlgExport.cpp”,12.3.4 MFC常

8、规DLL的调用,MFC常规DLL虽然其内部可能使用了MFC类库,但由于其接口是非MFC的,因此可以被非MFC应用程序调用,当然,MFC应用程序也可以调用它。本节同样通过一个控制台应用程序,显式调用上节开发的MFC常规DLLRegularDll.dll。,12.4 MFC扩展DLL的创建与使用,还可以使用DLL来实现从MFC派生的一些可重用类,这种动态链接库一般称作MFC扩展动态链接库(MFC Extension DLL)。通过这种方式可以扩展MFC所包括的内容,使得使用MFC编程更加的方便。此外,如果需要在应用程序和DLL之间传递MFC,或者由MFC派生的对象的指针,也必须使用MFC扩展DLL

9、。,12.4.1 MFC扩展DLL的创建,MFC扩展DLL支持C+的接口,也就是说它可以导出C+类给客户端。导出的函数可以使用C+/MFC数据类型做参数或返回值,导出一个类时,客户端能创建类对象或者派生这个类。因此,MFC扩展DLL的最大特点就是可以用来创建MFC的派生类。,12.4.2 MFC扩展DLL的创建实例,在本节中,将使用MFC扩展DLL来创建一个实现圆形按钮的按钮类CRoundButton,它派生自CButton类。 当然,圆形按钮也可以不使用DLL的形式,直接将CRoundButton类的头文件和源文件加入工程中。然而,每开发一个程序,要使用该类,都需将该类的头文件和源文件添加到

10、工程中,很不方便。通过MFC扩展DLL,可以将该类发布为一个DLL,这样,应用程序在需要时就可以通过加载该DLL来实现。,12.4.3 MFC扩展DLL的调用,MFC扩展DLL只被用MFC类库所编写的应用程序所调用,本节将通过一个实例调用ExtensionDll.dll中创建的圆形按钮控件。,12.5 DLL的查看与调试,DLL开发中,DLL导出接口的查询与程序调试也是经常需要用到的技术。本节将介绍使用Depends工具查看DLL的导出接口以及DLL程序的调试技术。,12.5.1 使用Depends工具查看DLL接口,Visual C+提供了Depends工具,使用它可以查看动态链接库的导出接口。在系统“开始”“所有程序”“Microsoft Visual Stadio 6.0”“Microsoft Visual Stadio 6.0 Tools”下会发现Depends工具。(具体内容请参照本书),12.5.2 DLL的调试,可以用两种方法调试一个动态链接库。如果有DLL和调用程序的源代码,则可以将DLL工程与调用DLL工程放置在同一VC工作区,只对调用程序进行调试,在调用DLL中函数的语句处设置断点,执行到断点后,按下快捷键“F11”,就单步进入DLL中的函数。(具体内容请参照本书),

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号