动态链接库(DLL)应用编程.pptVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态链接库(DLL)应用编程

第10章 动态链接库(DLL) 应用编程 本章要点: ? 动态链接库(DLL)的概念 ? 动态链接库的编写 ? 动态链接库的隐式调用和显示调用 ? 利用动态链接库实现窗体重用的方法 10.1 循序渐进学理论 10.1.1 动态链接库(DLL)概述 1.DLL的概念 DLL是一个可以执行的并可以被多个Windows应用程序共享的程序模块(称为Module),模块中包含了一些可以被多个Windows应用程序或DLL共享的代码、数据和资源。 动态连接库文件的扩展名一般是dll,也有可能是drv,sys和fon(它们分别对应的是设备驱动文件、系统文件和字体资源文件)。 2.静态链接和动态链接 (1)静态链接 传统的库函数是通过静态链接链到应用程序中的。这些库函数可能来自编程语言提供的标准库,也可能是由操作系统提供的API。 (2)动态链接 动态链接是指在把应用程序的目标代码链接成EXE文件时并没有将函数库中的函数复制到应用程序的可执行文件中,而是在程序运行时动态地加载所需的函数。 3.使用DLL的优点 使用动态链接库还有以下优点: (1)应用范围广。 (2)便于开发大型软件。 (3)便于对系统进行升级。 (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所示。 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语句的格式与功能如下: exports entry1,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函数代码并在内存中将其链接进入调用程序的执行空间,从而实现了代码的重用。 2.动态载入DLL 动态载入方式是指在编译之前并不知道将会调用哪些DLL函数,完全是在运行过程中根据需要决定应调用哪些函数,并用LoadLibrary函数加载动态链接库到内存,用GetProcAddress函数动态获得DLL函数的入口地址。 动态调用使用的Windows API函数主要有3个,分别是LoadLibrary、GetProcAddress和FreeLibrary。 (1)LoadLibrary函数 [格式]:functionLoadLibrary(LibFileName:PChar):Thandle; [功能]:加载由参数LibFileName指定的DLL文件。 (2)GetProcAddress函数 [格式]:functionGetProcAddress(Module:Thandle;ProcName:PChar):TfarProc; [功能]:返回参数Module指定的模块中,由参数ProcName指定的过程或函数的入口地址。 (3)Free

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档