最新动态链接库[new]..ppt课件.ppt

最新动态链接库[new]..ppt课件.ppt

ID:62264694

大小:1.89 MB

页数:51页

时间:2021-04-24

最新动态链接库[new]..ppt课件.ppt_第1页
最新动态链接库[new]..ppt课件.ppt_第2页
最新动态链接库[new]..ppt课件.ppt_第3页
最新动态链接库[new]..ppt课件.ppt_第4页
最新动态链接库[new]..ppt课件.ppt_第5页
资源描述:

《最新动态链接库[new]..ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、动态链接库[new]..目录01静态链接库02动态链接库概论先来阐述一下DLL(DynamicLinkableLibrary)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。静态链接库和动态链接库的另外一

2、个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。静态库和动态库函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。静态库:在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其它模块组合起来创建最终的可执行文件(.EXE文件)。在多个同样的程序执行时,系统保留了许多重复的代码副本,造成内存资源浪费。在使用动态库的时候,往往提供两个文件:一个引入库和一个DLL。引入库包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据。在编译链接可执行文

3、件时,只需要链接引入库,DLL中的函数代码和数据并不复制到可执行文件中,在运行的时候,再去加载DLL,访问DLL中导出的函数。使用DLL的动态链接并不是将库代码拷贝,只是在程序中记录了函数的入口点和接口,在程序执行时才将库代码装入内存;不管多少程序使用DLL,内存中都只有一个DLL的副本;当没有程序使用它时,系统就将它移出内存,减少了对内存和磁盘的要求。静态库中不能再包含其他的动态或静态库,而动态库则可以。使用动态链接库的好处DLL技术对于开发大型软件系统:一个大型系统要是用一个执行文件完成,程序将太庞大了,而且可能有许多重复的功能。这时将程序分成一个主程序和

4、一系列的DLL,可以减少开发的工作量。由于每个模块减小了,访问的速度将提高。开发者可以将依赖于语言的函数和资源分离出来,专门放进DLL中,例如中文、英文、法文等。各地使用软件的用户可以安装或者运行适当的DLL,以获取正确的本地信息,这是实现软件商品国际化的一项技术。可以采用多种编程语言来编写。增强产品的功能。提供二次开发的平台。简化项目管理。可以节省磁盘空间和内存。有助于资源的共享。有助于实现应用程序的本地化。动态链接库被多个进程访问代码页面2代码页面1数据页面2代码页面3数据页面1DLL的虚拟内存代码页面2代码页面1数据页面2代码页面3数据页面1代码页面1代

5、码页面2代码页面3数据页面1数据页面2代码页面2代码页面2代码页面3数据页面1数据页面2代码页面1第一个进程的地址空间第二个进程的地址空间隐式链接(隐式加载)显示链接(动态加载)动态链接库加载的两种方式隐式链接隐式链接的特点是由编译器完成对DLL的加载和程序结束时对DLL的卸载工作,如果程序结束时如果还有其他应用程序使用该DLL,那么系统会使DLL的使用计数减1,当DLL的使用计数降为0时,会将DLL从内存中删除★优缺点:隐式链接DLL的方法简单实用,但缺少灵活性。■使用方法:使用隐式链接DLL开发时,首先,需要将DLL的引入库文件(*.lib--编译生成DL

6、L时,会一起生成的)与应用程序进行静态链接,因为引入库文件包含DLL的各种输出资源,如导出函数,导出类等信息,这些信息指向DLL的函数指针等等,EXE执行时,DLL被“自动”加载,EXE退出时DLL被“自动”卸载。显示链接显示链接方式是完全由编程者用API加载和卸载DLL,编程者可以决定何时加载DLL,加载哪个DLL,何时卸载DLL,卸载哪个DLL等。★优缺点:显示链接方式充分体现了DLL的灵活性,是比较常用的调用DLL方式。但是与静态链接相比稍微复杂了些。■使用方法:LoadLibrary(...):该API用于加载指定的DLL;GetProcAddress

7、(...):该API用于获取DLL中导出函数的指针,即导出函数的入口点;FreeLibrary(...):该API用于卸载指定的DLL。〓注:如果程序中多次调用LoadLibrary(...)加载同一DLL时,在卸载的时候也要调用相应次数的FreeLibrary(...)进行卸载。显示连接▲使用LoadLibrary显式链接,在这个函数的参数中可以指定DLL文件的完整路径。如果不指定路径,Windows将遵循如下的搜索顺序来定位DLL:①EXE文件所在的目录:②进程的当前工作目录:③Windows系统目录:例如:C:WINDOWSsystem32④Wind

8、ows目录:例如:C:WINDOWS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。