Delphi第08章_Windows高级编程.pptx

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Delphi 程序设计教程(第3版)第8章Windows 高级编程清华大学出版社 杨长春 主编8.1动态链接库编程8.1.1 动态链接库简介1.动态链接库(DLL)简介 动态链接库(DymmicLinkLibrary.简称DLL)是一些编译过的可执行程序模块,它包含代码,数据或资源,可以在应用程序或其他DLL中调用动态链接厍的文件扩展名一般为.dll,也可以是.drv(设备驱动程序)、.sys(系统文件)和.fon(字体文件),DLL可以实现多个应用程序共享代码和资源。 2.动态链接库(DLL)工作原理 使用DLL的动态链接并不是将库代码拷贝,只是在程序中记录了函数的入口点和接口,在程序执行时才将库代码装入内存。所以不管多少程序使用了DLL,内存中都只有该DLL的一个副本。当没有程序使用它时,系统就将它移出内存,减少了对内存和磁盘的要求。 动态连接库属于Windows可执行文件,但它又不是EXE文件,它不像EXE文件那样可以直接执行,DLL文件中包含的可执行代码是由EXE文件调用的。 3.动态链接库(DLL)特点 DLL最大的特点就是它的代码在运行期间被动态地链接至调用它的程序中。它不用重复编译或链接,一旦装入内存,DLL函数可以被系统中的任何正在运行的应用程序所使用,他们共享该DLL函数的单一拷贝。 DLL中一般由程序通用的过程、函数等构成,当然也可以包括各种资源。在创建Windows应用程序时,链接过程并不把DLL文件中的例程链接到程序上,只有当EXE文件运行并需要调用一个DLL文件中的函数或过程时,Windows 才在DLL中寻找被调用函数并把它的地址传递给调用程序。 8.1.2 创建DLL 通过Delphi XE8主菜单的【File】|【New】|【Other】在弹出的【New Items】对话框中,选择Dynamic-link Library图标,单击【OK】按钮,系统将自动创建一个DLL项目。 DLL和Application项目文件的格式对比DLL项目文件的主要格式如下:Application项目文件的主要格式如下:Library 项目名; Program 项目名;Uses 子句; Uses 子句;Exports 子句; //数据接口函数 Begin //程序执行体Begin //程序执行体 End.End.? DLL项目文件和一般项目文件主要存在两个方面的区别: (1)Application项目文件用Program关键字作程序头,而DLL项目文件用Library关键字作程序头,因此编译器会根据不同的关键字来生成不同的可执行文件。用Program关键字生成的是.exe文件,而Library关键字生成的是.dll文件。(2)第二个区别是DLL提供接口都是Exports关键字来实现的。在DLL项目文件中,将我们想要输出的函数或过程,列在Exports子句中,就可以实现输出了。1.Exports关键字的使用 用关键字Exports引出函数或过程,表明编译时要使用远程地址调用,使得函数或过程在DLL内可被其他模块访问。Exports有如下几种形式:(1)exports例程名;//名字引出(2)exports例程名 index索引值; //索引值引出 index用来指示为一个函数或过程分配一个顺序号,其值的范围是为1~32767。(3)exports例程名 name 别名;//别名引出 name后面接的是字符串常量,用来指出该过程或函数的输出名。(4)exports例程名name别名resident //resident选项 8.1.3 DLL文件的静态调用 DLL文件的调用一般有两种方法,即静态调用方法和动态调用方法,静态调用方式,就是在本单元的Interface部分用External指示字列出要从DLL中调用的过程;动态调用方式是通过调用Windows API中的LoadLibrary函数、GetProcAdrress函数和FreeLibrary函数来实现DLL文件的动态调用。1.静态调用 静态调用又称为隐式加载方式,它是通过单元体中Interface部分的External指示字所列出需要调用DLL文件的过程或函数。这些被指定的DLL文件中的过程是在程序执行之前被加载进内存的。 静态调用方式在使用DIL中的函数或过程之前,先引入DLL中的函数或过程。引入DLL中的例程一般有三种方法:(1)通过过程名或函数名来调用: function funcName(参数):DataType;tdcall;external ‘DLL文件名’ (2)通过过程或函数的别名来调用: function funcName(参数):DataType;stdcall;external DLL文件名 n

文档评论(0)

kakaxi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档