- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章动态链接库9.1概述9.2创建MFCDLL9.3
第 9 章 动态链接库 9.1 概述 9.2 创建MFC DLL 9.3 使用MFC DLL 9.4 MFC扩展 DLL Visual C++程序设计与应用教程 * 第9章 动态链接库 Visual C++程序设计与应用教程 在多任务环境中,为了提高系统资源的利用率和系统的整体性能,应该使每一个应用程序尽量少占用系统内存等资源。 动态链接库便是这一设想的体现,允许多个应用程序同时共享动态链接库在内存中的同一份拷贝。 9.1 概述 9.1.1 动态链接库的概念 动态链接库(DLL):是一种用来为其它可执行文件(包括EXE文件和其它DLL)提供共享的函数库。 DLL中一般定义有两种类型的函数:导出函数和内部函数。导出函数是可以被外部程序调用的函数,内部函数只能在DLL内部使用。 9.1.2 动态链接库和静态链接库的区别 动态链接库和静态链接库的主要区别是与应用程序的链接方式不同,前者进行的是动态链接,后者进行的是静态链接。 9.1.3 使用动态链接库的优点 (1) 实现多个应用程序共享数据和代码的方式。 (2) 提高应用程序的执行效率和运行速度。 (3) 方便应用程序的升级和售后支持。 (4)把应用程序所使用的资源,如图标、位图、字符串和对话框等,独立出来做成DLL,为多个应用程序所共享。 (5) 动态链接库便于建立多语言的应用程序。 9.1.4 DLL文件的存放位置 程序所需的DLL文件必须位于下面4个目录之一中: (1) 当前目录 (2) Windows的系统的目录,如Windows\system (3) Windows所在的目录,如WINNT (4) 环境变量PATH中所指定的目录 Visual C++ 6.0支持多种DLL,包括: 非MFC DLL 一般来说,非MFC DLL的内部不使用MFC,非MFC DLL的导出函数都使用标准的C接口,因此无论应用程序是否使用了MFC,都可以调用非MFC DLL。 9.1.5 动态链接库的分类 MFC常规DLL MFC常规DLL实际上包含有两方面的含义。一方面它是“MFC的”,这意味着可以在这种DLL的内部使用MFC,另一方面它是“常规的”,这意味着它不同于MFC扩展DLL,在MFC规则DLL的内部虽然可以使用MFC,但是它与应用程序的接口不能是MFC,而是C函数或者C++类。因此MFC的常规DLL可以被非MFC或MFC编写的应用程序所调用。 MFC扩展DLL MFC扩展DLL一般用来提供派生于MFC的可重用的类,以扩展已有的MFC类库的功能。MFC扩展DLL使用MFC的动态链接版本。只有使用MFC生成的可执行程序(无论是EXE还是DLL)才能访问MFC扩展DLL。 利用MFC AppWizard[dll]向导可以创建MFC DLL。 DLL文件与可执行文件非常相似,不同点在于DLL包含有导出表。导出表包含DLL中每个导出函数的名字,这些函数是进入DLL的入口点。只有导出表中的函数可以被外部程序调用。 从MFC DLL中导出函数常用以下两种方法:使用模块定义文件(.DEF)和使用关键字_declspec(dllexport)。 9.2 创建MFC DLL 9.2.1 使用.DEF文件 DEF文件是一个包含EXE文件或DLL文件声明的文本文件。每个.DEF文件至少必须包含LIBRARY语句和EXPORTS 语句,其他语句可以省。 DEF文件常用的模块语句如下: 第一个语句必须是LIBRARY语句,这个语句指出DLL的名字,链接器将这个名字放到DLL导入库中,DLL导入库包含了指向外部DLL的函数索引指针。 EXPORTS 语句列出被导出函数的名字, 以及导出函数的数值(由@号与数字构成)。序数值可以省略,编译器会为每个导出函数指定一个,但这样指定的值不如自己指定的明确。 使用DESCRIPTION语句描述DLL的用途,这个语句可以省略。 使用“;”开头的注释语句。 使用AppWizard创建一个MFC DLL时,AppWizard将创建一个.DEF文件的框架,并自动添加到项目中。建立DLL时,链接器使用.DEF文件来创建一个导出文件(.EXP)和一个导入库文件(.LIB),然后使用导出文件来创建.DLL文件。 【例9.1】 创建一个计算正方形和圆的面积的MFC 常规DLL的动态连接库Regulardll。 9.2.2 使用关键字_declspec(dllexport)
文档评论(0)