《VC++深入详解教学》第十九讲 动态链接库(孙鑫)

动态链接库 主讲人:孙鑫 http://www.sunxin.org
动态链接库 主讲人:孙鑫 http://www.sunxin.org

动态链接库 自从微软推出第一个版本的 Windows操作系统以来,动态 链接库(DⅠL)一直是 Windows操作系统的基础 动态链接库通常都不能直接运行,也不能接收消息。它们 是一些独立的文件,其中包含能被可执行程序或其它DII 调用来完成某项工作的函数。只有在其它模块调用动态链 接库中的函数时,它才发挥作用。 ■ Windows Ap中的所有函数都包含在DⅠL中。其中有3个最 重要的DIL, Kernel32d,它包含用于管理内存、进程和 线程的各个函数;User32d,它包含用于执行用户界面任 务(如窗口的创建和消息的传送)的各个函数;GDI32.dl, 它包含用于画图和显示文本的各个函数。 http://www.sunxin.org
动态链接库 ◼ 自从微软推出第一个版本的Windows操作系统以来,动态 链接库(DLL)一直是Windows操作系统的基础。 ◼ 动态链接库通常都不能直接运行,也不能接收消息。它们 是一些独立的文件,其中包含能被可执行程序或其它DLL 调用来完成某项工作的函数。只有在其它模块调用动态链 接库中的函数时,它才发挥作用。 ◼ Windows API中的所有函数都包含在DLL中。其中有3个最 重要的DLL,Kernel32.dll,它包含用于管理内存、进程和 线程的各个函数;User32.dll,它包含用于执行用户界面任 务(如窗口的创建和消息的传送)的各个函数;GDI32.dll, 它包含用于画图和显示文本的各个函数。 http://www.sunxin.org

静态库和动态库 静态库:函数和数据被编译进一个二进制文件(通 常扩展名为』IB)在使用静态库的情况下,在编 译链接可执行文件时,链接器从库中复制这些函 菜整基得受程支写楼块组合起 在使用动态库的时候,往往提供两个文件:个 引人库和一个DLL。引入库 被DL导出的函 数和变量的符号名,DⅠ包含实际的函数和数据 在编译链接可 文件 接引入库 DL中的函数代码和数据并不复制到可执行文件 中,在运行的时候,再去加载DⅠL,访问DⅠL中 导出的函数。 http://www.sunxin.org
静态库和动态库 ◼ 静态库:函数和数据被编译进一个二进制文件(通 常扩展名为.LIB)。在使用静态库的情况下,在编 译链接可执行文件时,链接器从库中复制这些函 数和数据并把它们和应用程序的其它模块组合起 来创建最终的可执行文件(.EXE文件)。 ◼ 在使用动态库的时候,往往提供两个文件:一个 引入库和一个DLL。引入库包含被DLL导出的函 数和变量的符号名,DLL包含实际的函数和数据。 在编译链接可执行文件时,只需要链接引入库, DLL中的函数代码和数据并不复制到可执行文件 中,在运行的时候,再去加载DLL,访问DLL中 导出的函数。 http://www.sunxin.org

使用动态链接库的好处 ■可以采用多种编程语言来编写。 ■增强产品的功能。 ■提供二次开发的平台 简化项目管理。 可以节省磁盘空间和内存。 有助于资源的共享。 ■有助于实现应用程序的本地化 http://www.sunxin.org
使用动态链接库的好处 ◼ 可以采用多种编程语言来编写。 ◼ 增强产品的功能。 ◼ 提供二次开发的平台。 ◼ 简化项目管理。 ◼ 可以节省磁盘空间和内存。 ◼ 有助于资源的共享。 ◼ 有助于实现应用程序的本地化。 http://www.sunxin.org

动态链接库被多个进程访问 第一个进程的 第二个进程的 地址空间 DLL的虚拟内存 地址空间 代码页面1 代码页面2 代码页面1 代码页面2 代码页面1 代码页面2 代码页面3 数据页面2 代码页面3 数据页面1 代码页面3 数据页面1 数据页面2 数据页面1 数据页面2 http://www.sunxin.org
动态链接库被多个进程访问 代码页面2 代码页面1 数据页面2 代码页面3 数据页面1 DLL的虚拟内存 代码页面2 代码页面1 数据页面2 代码页面3 数据页面1 代码页面1 代码页面2 代码页面2 代码页面3 数据页面1 数据页面2 代码页面2 代码页面2 代码页面3 数据页面1 数据页面2 代码页面1 第一个进程的 地址空间 第二个进程的 地址空间 http://www.sunxin.org

动态链接库加载的两种方式 ■隐式链接 ■显示加载
动态链接库加载的两种方式 ◼ 隐式链接 ◼ 显示加载
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《VC++深入详解教学》第十五讲 多线程与聊天室程序的创建(孙鑫).ppt
- 《VC++深入详解教学》第十三讲 文档(孙鑫).ppt
- 《VC++深入详解教学》第十四讲 网络编程(孙鑫).ppt
- 《VC++深入详解教学》对话框(续)(孙鑫).ppt
- 《VC++深入详解教学》第二十讲 HOOK和数据库访问(孙鑫).ppt
- 《VC++深入详解教学》第十二讲 文件(孙鑫).ppt
- 《VC++深入详解教学》第十七讲 进程间通信(孙鑫).ppt
- 《VC++深入详解教学》对话框(孙鑫).ppt
- 《VC++深入详解教学》Windows程序运行原理(孙鑫).ppt
- 《VC++深入详解教学》第十讲 创建兼容DC(孙鑫).ppt
- 《VC++深入详解教学》菜单(孙鑫).ppt
- 《VC++深入详解教学》第十一讲 图形的保存和重绘(孙鑫).ppt
- 《VC++深入详解教学》文本编程(孙鑫).ppt
- 《VC++深入详解教学》第十六讲 线程同步与异步套接字编程(孙鑫).ppt
- 《VC++深入详解教学》第十八讲 ActiveX控件(孙鑫).ppt
- 《VC++深入详解教学》掌握C++(孙鑫).ppt
- 《Java程序设计》课程电子教案(PPT课件讲稿)循环.ppt
- 《Java程序设计》课程电子教案(PPT课件讲稿)第二章 结构化程序设计.ppt
- 《Java程序设计》课程电子教案(PPT课件讲稿)面向对象、JAVA语言中的两种类.ppt
- 《Java程序设计》课程电子教案(PPT课件讲稿)第四章 JAVA语言深入.ppt
- 重庆移通学院:《数据结构》课程教学资源(教程讲义,共二十八课,闫会峰).doc
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)Huffman树及其应用.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)习题讲解(闫会峰).ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)树的练习.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)模式匹配的BF算法.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)渡河问题.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第11章 结构体与共用体.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第1章 绪论(闫会峰).ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第2章 算法分析.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第3章 线性表.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第4章 栈和队列.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第5章 串.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第6章 数组与广义表.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第7章 树.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第8章 图.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)线性表操作综合运行例子.ppt
- 《Linux课件》第三章 Linux中的进程管理.ppt
- 《Linux课件》SHELL编程.ppt
- 《Linux课件》第三章 Linux的安装与配置.ppt
- 《Linux课件》第四章 Linux使用基础.ppt