第--章-动态链接库(DLL优秀文档.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第--章-动态链接库(DLL优秀文档.ppt》由会员分享,可在线阅读,更多相关《第--章-动态链接库(DLL优秀文档.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第10章章 动态链接库(动态链接库(DLL)应用编程应用编程 本章要点:动态链接库(DLL)的概念 动态链接库的编写 动态链接库的隐式调用和显示调用 利用动态链接库实现窗体重用的方法10.1 循序渐进学理论 10.1.1 动态链接库(动态链接库(DLL)概述)概述 1DLL的概念 DLL是一个可以执行的并可以被多个Windows应用程序共享的程序模块(称为Module),模块中包含了一些可以被多个Windows应用程序或DLL共享的代码、数据和资源。动态连接库文件的扩展名一般是dll,也有可能是drv,sys和fon(它们分别对应的是设备驱动文件、系统文件和字体资源文件)。2静态链接和动态链
2、接(1)静态链接 传统的库函数是通过静态链接链到应用程序中的。这些库函数可能来自编程语言提供的标准库,也可能是由操作系统提供的API。图10-10 程序设计界面0集成环境中,执行【File】【New】【Other】命令,将会出现【New Items】对话框窗口,在该窗口中找到【DLL Wizard】图标,如图10-3所示。(1)如果加载的DLL文件不存在或者DLL中没有要引入的例程,程序将自动终止运行;(5)进行函数调用(本题调用语句为:Myfunct(x,y,z););(1)如果加载的DLL文件不存在或者DLL中没有要引入的例程,程序将自动终止运行;(3)用exports语句声明供其它应用程
3、序 调用的函数和过程名为编写该动态链接库,需经过以下步骤:(2)在应用程序中直接调用用extern子句声明的过程。然后编写一个项目文件,在该项目文件中对这三个函数进行调用。传统的库函数是通过静态链接链到应用程序中的。图10-11 程序运行界面要求:在项目文件中采用显式调用的方法调用动态链接库中的函数。(3)修改工程文件,使之能生成DLL文件(2)动态链接 动态链接是指在把应用程序的目标代码链接成EXE文件时并没有将函数库中的函数复制到应用程序的可执行文件中,而是在程序运行时动态地加载所需的函数。3使用DLL的优点 使用动态链接库还有以下优点:(1)应用范围广。(2)便于开发大型软件。(3)便于
4、对系统进行升级。(4)隐藏细节。(5)独立于编程语言。10.1.2 动态链接库(动态链接库(DLL)编写)编写 根据动态链接库完成的功能,可把DLL分成三类:完成一般功能的DLL、用于数据交换的DLL和用于窗体重用的DLL。【例10-1】创建一个动态链接库,该动态链接库中包含两个函数,分别用于求三个数的最大值和最小值。为编写该动态链接库,需经过以下步骤:(1)建立DLL程序框架 在Delphi 7.0集成环境中,执行【File】【New】【Other】命令,将会出现【New Items】对话框窗口,在该窗口中找到【DLL Wizard】图标,如图10-3所示。图10-3 “New Items”
5、对话框 2建立过程和函数 为该动态链接库项目增加如下两个函数:为该动态链接库项目增加如下两个函数:Function Max(x,y,z:Integer):Integer;stdcall;/求三个数的最大值函数 Function Min(x,y,z:Integer):Integer;stdcall;/求三个数的最小值函数 (3)用exports语句声明供其它应用程序 调用的函数和过程名 函数或过程定义好后,为了能够被其它应用程序调用,还必须用Exports子句把函数名列出。本例使用的Exports语句如下:exports Max,Min;Exports语句的格式与功能如下:exportsentr
6、y1,entry2,entryn;(4)生成DLL文件执 行【Project】【Build Exam_10_1】命 令(“Exam_10_1”为动态链接库项目文件名),将自动生成名为“Exam_10_1.dll”的动态链接库文件。10.1.3 加载动态链接库(加载动态链接库(DLL)的方法)的方法 1静态载入DLL 这种方法是将DLL文件映像映射到调用进程地址空间的最简单的办法。静态载入DLL的前提是在编译之前已经明确知道要调用DLL中的哪几个函数,编译时在目标文件中只保留必要的链接信息,而不包含DLL函数的代码。在程序执行时,利用链接信息加载DLL函数代码并在内存中将其链接进入调用程序的执行
7、空间,从而实现了代码的重用。2动态载入DLL 动态载入方式是指在编译之前并不知道将会调用哪些DLL函数,完全是在运行过程中根据需要决定应调用哪些函数,并用LoadLibrary函数加载动态链接库到内存,用GetProcAddress函数动态获得DLL函数的入口地址。动态调用使用的Windows API函数主要有3个,分别是LoadLibrary、GetProcAddress和FreeLibrary。(1)LoadLibrary函数 格式:functionLoadLibrary(LibFileName:PChar):Thandle;功能:加载由参数LibFileName指定的DLL文件。(2)G
8、etProcAddress函数格式:functionGetProcAddress(Module:Thandle;ProcName:PChar):TfarProc;功能:返回参数Module指定的模块中,由参数ProcName指定的过程或函数的入口地址。(3)FreeLibrary函数 格式:procedure FreeLibrary(Module:Thandle);功能:将由参数Module指定的DLL文件从内存中卸载1次。10.1.4 调用动态链接库(调用动态链接库(DLL)中的过程和函数中的过程和函数 在应用程序中,调用动态链接库也有两种方法。分别是隐式调用和显示调用。1隐式调用 隐式调用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 链接 DLL 优秀 文档
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内