版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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.3 Visual C+6.0可开发的DLL Visual C+ 6.0支持多种DLL,包括:非MFC DLL、静态链接到MFC的常规DLL、动态链接到MFC的常规DLL和MFC扩展DLL。 其中,非MFC DLL也称为Win32 DLL,其内部不采用MFC类库构造,导出函数普通为规范的C接口。它能被非MFC或MFC编写的运用程序所调用。详细内容请参照本书12.1.4 DLL文件的组成 一个发布的可供运用的动态链接库,普通包含三个文件:包含文件.H、导入库文件.LIB和实践代码文件
4、.DLL。详细内容请参照本书12.2 DLL的创建与调用 本节以非MFC DLLWin32 DLL为例来讲解DLL的构造和导出方法,并引见创建和运用DLL的方法和步骤。12.2.1 Win32 DLL的创建 与MFC运用程序框架的创建类似,运用AppWizard可以方便地创建一个Win32 DLL框架。本节将利用AppWizard创建一个Win32 DLL,该DLL提供了一个导出函数FactorialFun,实现正整数的阶乘运算如,5!=5*4*3*2*1。详细内容请参照本书12.2.2 DLL的导出 DLL文件和EXE文件都属于可执行文件,不同的是DLL文件包含了一个导出表,导出表中给出了可
5、以从DLL中导出的一切函数的名字。外部可执行程序只能访问包括在DLL的导出表中的函数,DLL中的其它函数是私有的,不能为外部可执行程序所访问。 从DLL中导出函数有两种方法:在定义函数时运用关键字_declspecdllexport;在创建DLL时运用模块定义.DEF文件。详细内容请参照本书12.2.3 运用程序链接DLL 链接运用程序到DLL也有两种方法:隐式链接和显式链接。 隐式链接又称为静态加载。假设运用程序运用了隐式链接,操作系统在加载运用程序的同时加载运用程序所运用的DLL。显式链接又称为动态加载。运用动态加载的运用程序必需在代码中明确的加载所运用的DLL,并运用指针来调用DLL中的
6、导出函数,在运用终了之后,运用程序必需卸载所运用的DLL。详细内容请参照本书12.3 MFC常规DLL的创建与运用 前面曾经引见了普通DLLWin32 DLL的开发和运用,下面将要引见基于MFC的DLL的开发。MFC DLL可以运用MFC类库,从而能在MFC的协助下开发出功能强大的模块。 基于MFC的DLL有MFC常规DLL和MFC扩展DLL,本节将引见MFC常规DLL的创建与运用。12.3.1 根本概念 MFC常规DLL,顾名思义,其包含两方面的含义。首先,它是MFC DLL,即可以在DLL的内部运用MFC类库。其次,它是常规的,即它不同于MFC扩展DLL,在其内部虽然可以运用MFC,但它与
7、运用程序的接口不能是MFC,如它不能导出一个MFC类的派生类。 MFC常规DLL有两种类型:静态链接到MFC库的规那么DLLRegular DLL with MFC statically linked和动态链接到MFC库的规那么DLLRegular DLL using shared MFC DLL。从开发角度讲,两者的开发过程一样的。详细内容请参照本书12.3.2 MFC常规DLL的创建 同样,运用AppWizard可以方便地创建一个MFC常规DLL框架程序。下面就详细引见运用AppWizard导游创建MFC常规DLL的过程。12.3.3 MFC常规DLL创建实例 本节将经过一个详细的实例讲解
8、MFC常规DLL的创建过程。该DLL的导出函数实现创建一对话框。详细内容请参照本书 3创建DLL导出函数 创建导出函数需求新建一个源文件,执行“File“New菜单命令,利用New对话框为工程添加一C+源文件,命名为“DlgExport.cpp 12.3.4 MFC常规DLL的调用 MFC常规DLL虽然其内部能够运用了MFC类库,但由于其接口是非MFC的,因此可以被非MFC运用程序调用,当然,MFC运用程序也可以调用它。本节同样经过一个控制台运用程序,显式调用上节开发的MFC常规DLLRegularDll.dll。12.4 MFC扩展DLL的创建与运用 还可以运用DLL来实现从MFC派生的一些
9、可重用类,这种动态链接库普通称作MFC扩展动态链接库MFC Extension DLL。经过这种方式可以扩展MFC所包括的内容,使得运用MFC编程更加的方便。此外,假设需求在运用程序和DLL之间传送MFC,或者由MFC派生的对象的指针,也必需运用MFC扩展DLL。12.4.1 MFC扩展DLL的创建 MFC扩展DLL支持C+的接口,也就是说它可以导出C+类给客户端。导出的函数可以运用C+/MFC数据类型做参数或前往值,导出一个类时,客户端能创建类对象或者派生这个类。因此,MFC扩展DLL的最大特点就是可以用来创建MFC的派生类。12.4.2 MFC扩展DLL的创建实例 在本节中,将运用MFC扩
10、展DLL来创建一个实现圆形按钮的按钮类CRoundButton,它派生自CButton类。 当然,圆形按钮也可以不运用DLL的方式,直接将CRoundButton类的头文件和源文件参与工程中。然而,每开发一个程序,要运用该类,都需将该类的头文件和源文件添加到工程中,很不方便。经过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 Tool
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 2 Shopping Lesson2(说课稿)-2024-2025学年北师大版(三起)英语四年级上册
- 2024年三年级品社下册《马路不是游戏场》说课稿 山东版
- 2024-2025学年高中地理 第4章 旅游与区域的发展 第1节 旅游业的发展及其对区域的影响说课稿 中图版选修3
- Unit 1 Growing up 单元说课稿-2024-2025学年高中英语外研版(2019)选择性必修第二册
- 下城区汽车租赁合同范本
- 保安奖罚合同范例
- 医用耗材寄售合同范例
- 加贸合同范本
- 专利注册合同范本
- 人工智能购销合同范例
- 丰顺县县级集中式饮用水水源地基础状况调查和风险评估报告
- 重庆市2023-2024学年七年级上学期期末考试数学试题(含答案)
- 《七律二首 送瘟神》教案- 2023-2024学年高教版(2023)中职语文职业模块
- 八年级语文上册《作文》专项测试卷及答案
- 2024年中考语文满分作文6篇(含题目)
- 2024年安全员之江苏省C2证(土建安全员)题库与答案
- 第一节-货币资金资料讲解
- 2024年华侨、港澳、台联考高考数学试卷含答案
- 工程造价咨询服务投标方案(技术方案)
- 驾驶员安全行车考核奖惩制度(3篇)
- 篮球俱乐部合伙协议
评论
0/150
提交评论