- 1、本文档共102页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章动态链接库 动态链接库(Dynamic Link Librar,DLL)是一个可执行模块,其包含的函数可以由Windows应用程序调用以执行一些功能,主要为应用程序模块提供服务。 本章将全面、系统地阐述在Visual C++平台下进行Win32动态链接库的设计和应用。主要内容如下。 ● 动态链接库(DLL)的基础知识。 ● DLL的出入口函数。 ● 调用DLL中的两种方式。 ● 开发DLL的方式。 ● DLL中资源的利用。 11.1 动态链接库的基础知识 比较大的应用程序都是由很多模块组成的,这些模块彼此协作,以完成整个软件系统的工作。 其中可能存在一些模块的功能较为通用,在构造其他软件系统时仍会被使用。 在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题。 一是增加了应用程序的大小,占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另外,在编写大的EXE程序时,每次修改重建时都必须调整编译所有源代码,不但增加了编译过程的复杂性,也不利于阶段性的单元测试。 Windows系统平台上提供了一种完全不同的有效编程和运行环境,可以将独立的程序模块创建为较小的动态链接库文件,并可对它们单独进行编译和测试。 在运行时,只有在EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。 这种方式不仅减少了EXE文件的大小和对内存空间的需求,而且这些DLL模块可以同时被多个应用程序使用,从而充分利用资源。 Microsoft Windows将一些主要的系统功能以DLL模块的形式实现。 例如,IE中的一些基本功能就是由DLL文件实现的,它可以被其他应用程序调用和集成。 一般来说,下面的这几种情况必须用到动态链接库技术。 ● 多个应用程序共享代码和数据就是通过共享动态链接库实现的,比如Office软件的各个组成部分有相似的外观和功能。 ● 在钩子程序过滤系统消息时必须使用动态链接库。 ● 设备驱动程序必须是动态链接库。 ● 如果要在对话框编辑器中使用自己定义的控件,也必须使用动态链接库。 ● 动态链接库以一种自然的方式将一个大的应用程序划分为几个小的模块,有利于小组内部成员的分工与合作。 而且,各个模块可以独立升级。 如果小组中的一个成员开发了一组实用示例,他就可以把这些示例放在一个动态链接库中,让小组的其他成员使用。 ● 为了实现应用程序的国际化,往往需要使用动态链接库。 使用动态链接库可以将针对某一国家、语言的信息存放在其中。 对于不同的版本,使用不同的动态链接库。 在使用AppWizard生成应用程序时,可以指定资源文件使用的语言,这就是通过提供不同的动态链接库实现的。 一般来说,DLL是一种磁盘文件(通常带有DLL扩展名),它由全局数据、服务函数和资源组成,在运行时被系统加载到进程的虚拟空间中,成为调用进程的一部分。 如果与其他DLL之间没有冲突,该文件通常映射到进程虚拟空间的同一地址上。 DLL模块中包含各种导出函数,用于向外界提供服务。 Windows在加载DLL模块时将进程函数调用与DLL文件的导出函数相匹配。 在Win32环境中,每个进程都复制了自己的读写全局变量。 如果想要与其他进程共享内存,必须使用内存映射文件或者声明一个共享数据段。 DLL模块需要的堆栈内存都是从运行进程的堆栈中分配出来的。 DLL现在越来越容易编写。 Win32已经大大简化了其编程模式,并有许多来自AppWizard和MFC类库的支持。 使用Visual C++ 6.0工具可以编写3种不同类型的动态链接库。 ● Non-MFC DLL:
您可能关注的文档
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第1章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第2章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第3章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第4章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第5章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第6章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第7章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第8章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第9章.ppt
- Visual C#2005数据库开发案例教程 教学课件 作者 李志云 第10章.ppt
- 广东省深圳市龙岗区德琳学校初中部2022-2023学年七年级上学期期中考试英语试题(原卷版+解析).docx
- 广东省珠海市第四中学、立才学校、梅华中学2022-2023学年七年级上学期期中质量检测英语试题(原卷版+解析).docx
- 教科版2024-2025学年六年级科学上册第一单元第4课时《生物细胞》同步练习(含答案).docx
- 牛津沪教版七年级英语上册单元速记•巧练 Unit 7 【单元测试 · 提高卷】.docx
- 牛津沪教版七年级英语上册单元速记•巧练 Unit 5【单元测试 · 基础卷】.docx
- 广东省深圳市南山区太子湾学校2022-2023学年七年级上学期期中考试英语试题(原卷版+解析).docx
- 广东省深圳市南山第二外国语学校(集团)2022-2023学年七年级上学期期中考试英语试题(含听力)(原卷版+解析).docx
- 牛津沪教版七年级英语上册单元速记•巧练 2023-2024学年七年级上学期期末英语全真模拟卷(深圳适用02).docx
- 广东省阳江市江城区2022-2023学年七年级上学期期中考试英语试题(原卷版+解析).docx
- 广东省梅州市梅县区宪梓中学2022-2023学年七年级上学期期中英语试题(原卷版+解析).docx
文档评论(0)