《Delphi7应用教程》第10章 动态链接库(DLL)应用

第10章动态链接库(DLL) 应用编程 本章要点: 区动态链接库(DIL)的概念 区动态链接库的编写 多区动态链接库的隐式调用和显示调用 区利用动态链接库实现窗体重用的方法
第10章 动态链接库(DLL) 应用编程 本章要点: 动态链接库(DLL)的概念 动态链接库的编写 动态链接库的隐式调用和显示调用 利用动态链接库实现窗体重用的方法

10.1循序渐进学理论 10.1.1动态链接库(DLL)概述 1.DLL的概念 DLL是一个可以执行的并可以被多个 Windows应用 程序共享的程序模块(称为 Module),模块中包含了 些可以被多个 Windows应用程序或DLL共享的代码、 数据和资源。 动态连接库文件的扩展名一般是d11,也有可能是 drv,sys和fon(它们分别对应的是设备驱动文件、 系统文件和字体资源文件)
10.1 循序渐进学理论 10.1.1 动态链接库(DLL)概述 1.DLL的概念 DLL是一个可以执行的并可以被多个Windows应用 程序共享的程序模块(称为Module),模块中包含了 一些可以被多个Windows应用程序或DLL共享的代码、 数据和资源。 动态连接库文件的扩展名一般是dll,也有可能是 drv,sys和fon(它们分别对应的是设备驱动文件、 系统文件和字体资源文件)

2.静态链接和动态链接 (1)静态链接 传统的库函数是通过静态链接链到应用程序中的 这些库函数可能来自编程语言提供的标准库,也可能 是由操作系统提供的API。 源代码 函数1函数2 …函数 函数n 图数库 编译 形成的Exe文件入 编译后的OBJ文件 连接 编译后的OBJ文件函数2函数 图10-1静态链接示意图
2.静态链接和动态链接 (1)静态链接 传统的库函数是通过静态链接链到应用程序中的。 这些库函数可能来自编程语言提供的标准库,也可能 是由操作系统提供的API

(2)动态链接 动态链接是指在把应用程序的目标代码链接成 EXE文件时并没有将函数库中的函数复制到应用程序 的可执行文件中,而是在程序运行时动态地加载所需 的函数。 源代码引入库函数1函数2…函数1…函数n LL 编译 内存 形成的EXE文件 编译后的OBJ文件 连接 编译后的OB文件重定位信息…重定位信息] 图10-2动态链接示意图
(2)动态链接 动态链接是指在把应用程序的目标代码链接成 EXE文件时并没有将函数库中的函数复制到应用程序 的可执行文件中,而是在程序运行时动态地加载所需 的函数

3.使用DLL的优点 使用动态链接库还有以下优点: (1)应用范围广。 (2)便于开发大型软件 (3)便于对系统进行升级 (4)隐藏细节。 (5)独立于编程语言
3.使用DLL的优点 使用动态链接库还有以下优点: (1)应用范围广。 (2)便于开发大型软件。 (3)便于对系统进行升级。 (4)隐藏细节。 (5)独立于编程语言

10.1.2动态链接库(DLL)编写 根据动态链接库完成的功能,可把DLL 分成三类:完成一般功能的DLL、用于数据交 换的DLL和用于窗体重用的DLL。 【例10-1】创建一个动态链接库,该动态链接库 中包含两个函数,分别用于求三个数的最大值和最小 值。为编写该动态链接库,需经过以下步骤: (1)建立DL程序框架 在 Delphi7.0集成环境中,执行【File】→ 【New】→【0ther】命令,将会出现【 New items】 对话框窗口,在该窗口中找到【 DLL Wizard】图标, 如图10-3所示
10.1.2 动态链接库(DLL)编写 根据动态链接库完成的功能,可把DLL 分成三类:完成一般功能的DLL、用于数据交 换的DLL和用于窗体重用的DLL。 【例10-1】创建一个动态链接库,该动态链接库 中包含两个函数,分别用于求三个数的最大值和最小 值。为编写该动态链接库,需经过以下步骤: (1)建立DLL程序框架 在Delphi 7.0集成环境中,执行【File】→ 【New】→【Other】命令,将会出现【New Items】 对话框窗口,在该窗口中找到【DLL Wizard】图标, 如图10-3所示

7 Hey Items Projects Data Modules Intraweb WebServices Business webSnap Web Documents Corba New Activex Multitier I Project2I Forms I I Dialogs CLX Frame Component Console Control Panel Control Panel C Application Application Module Data Module DLL Wizard Form Frame Package C Copy C Inherit C Use K Cancel Help 图10-34 New items对话框
图10-3 “New Items”对话框

2.建立过程和函数 为该动态链接库项目增加如下两个函数: Function max( x,y, z: Integer) nteger;sdcl!求三个数的最 大值函数 Function Min (x, y, z: Integer): Integer; stdcall; //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 entry, entry4,.., entry, (4)生成DLL文件 执行【 Project】→【 Build Exam101】命令 (“Exam101”为动态链接库项目文件名),将自动 生成名为“Exam101.d1的动态链接库文件
(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”的动态链接库文件

1013加载动态链接库(DLL)的方法 1.静态载入DLL 这种方法是将DLL文件映像映射到调用进程地址 空间的最简单的办法。 静态载入DL的前提是在编译之前已经明确知道 要调用DLL中的哪几个函数,编译时在目标文件中只 保留必要的链接信息,而不包含DL函数的代码。在 程序执行时,利用链接信息加载DLL函数代码并在内 存中将其链接进入调用程序的执行空间,从而实现了 代码的重用
10.1.3 加载动态链接库(DLL)的方法 1.静态载入DLL 这种方法是将DLL文件映像映射到调用进程地址 空间的最简单的办法。 静态载入DLL的前提是在编译之前已经明确知道 要调用DLL中的哪几个函数,编译时在目标文件中只 保留必要的链接信息,而不包含DLL函数的代码。在 程序执行时,利用链接信息加载DLL函数代码并在内 存中将其链接进入调用程序的执行空间,从而实现了 代码的重用
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 兰州石化职业技术学院:《微机组装与维护技术》单元3 主板(芯片组I/O接口).pps
- 兰州石化职业技术学院:《微机组装与维护技术》单元2 CPU介绍.pps
- 兰州石化职业技术学院:《微机组装与维护技术》单元1 计算机系统组成.pps
- 兰州石化职业技术学院:《微机组装与维护技术》单元4 存储器.pps
- 《VisuaI Basic 程序设计基础教程》ppt电子书(共八章).ppt
- 《VisuaI Basic 程序设计基础教程》习题解答.doc
- 《汇编语言基础入门》第四章 汇编语言.ppt
- 《汇编语言基础入门》第二章 IBM PC计算机组织.ppt
- 《汇编语言基础入门》第三章(3-1) 寻址方式.ppt
- 《汇编语言基础入门》第三章 寻址方式与指令系统.ppt
- 《汇编语言基础入门》第一章 基础知识.ppt
- 西安交通大学:《计算机网络技术》第1讲 计算机网络与因特网概述.ppt
- 西安交通大学:《计算机网络技术》第9讲 网络操作系统.ppt
- 西安交通大学:《计算机网络技术》第8讲 网络安全.ppt
- 西安交通大学:《计算机网络技术》第7讲 多媒体网络续.ppt
- 西安交通大学:《计算机网络技术》第7讲 多媒体网络.ppt
- 西安交通大学:《计算机网络技术》第6讲 数据链路层.ppt
- 西安交通大学:《计算机网络技术》第五讲 TP数据报格式.ppt
- 西安交通大学:《计算机网络技术》第5讲 网络层.ppt
- 西安交通大学:《计算机网络技术》第4讲 传输层之二.ppt
- 《Delphi7应用教程》第11章 组件开发技术.ppt
- 《Delphi7应用教程》第12章 图形图像编程.ppt
- 《Delphi7应用教程》第13章 多媒体应用程序开发.ppt
- 《Delphi7应用教程》第14章 数据库应用开发.ppt
- 《Delphi7应用教程》第1章 Delphi 7.0程序设计.ppt
- 《Delphi7应用教程》第2章 基本数据类型与表达式.ppt
- 《Delphi7应用教程》第3章 基本程序设计语句.ppt
- 《Delphi7应用教程》第4章 数组程序设计.ppt
- 《Delphi7应用教程》第5章 过程与函数.ppt
- 《Delphi7应用教程》第6章 用户自定义类型.ppt
- 《Delphi7应用教程》第7章 常用组件的使用.ppt
- 《Delphi7应用教程》第8章 Delphi 7.0的.ppt
- 《Delphi7应用教程》第9章 应用程序界面设计技术.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第8章 串行通信接口技术.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第1章 计算机基础(唐露新).ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第2章 单片机系统组成原理.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第3章 单片机指令系统.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第4章 汇编语言程序设计习题.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第5章 单片机应用系统扩展设计.ppt
- 广东工业大学:《单片机原理与应用 Principles and Application of Microcontroller》课程教学资源(PPT课件讲稿)第6章 键盘、显示接口技术.ppt