Delphi软件开发技术 教学课件 作者 张世明P4.ppt

Delphi软件开发技术 教学课件 作者 张世明P4.ppt

ID:50045024

大小:576.50 KB

页数:153页

时间:2020-03-08

Delphi软件开发技术 教学课件 作者 张世明P4.ppt_第1页
Delphi软件开发技术 教学课件 作者 张世明P4.ppt_第2页
Delphi软件开发技术 教学课件 作者 张世明P4.ppt_第3页
Delphi软件开发技术 教学课件 作者 张世明P4.ppt_第4页
Delphi软件开发技术 教学课件 作者 张世明P4.ppt_第5页
资源描述:

《Delphi软件开发技术 教学课件 作者 张世明P4.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章 动态链接库(DLLs)编程动态链接库(DynamicLinkLibrary,简称DLL)是一些编译过的可执行代码模块,后缀名为.DLL,可以在应用程序中或其他DLL中被调用。在Windows环境中,DLL可以实现多个应用程序共享代码和资源。4.1动态链接库概述4.2在Delphi中DLLs的编写4.3在Delphi中DLLs的调用4.4利用DLLs实现窗体重用4.5利用DLLs实现数据传输4.6DLL与Delphi组件包4.1动态链接库概述动态链接库(DLLs)是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中,同时用户也可以用LIB程序

2、创建自己的函数库。动态链接库不用重复编译或链接,一旦装入内存,DLLs函数可以被系统中的任何正在运行的应用程序软件所使用,而不必再将DLLs函数的另一拷贝装入内存。4.1.1Windows系统的动态链接库Windows本身就是由大量的动态链接库支持的。这包括WindowsAPI函数(KRNLx86.EXE,USER.EXE,GDI.EXE,…),各种驱动程序文件,各种带有.Fon和.Fot扩展名的字体资源文件等。虽然在编写Windows程序时必然要涉及到DLLs,但利用Delphi,用户在大部分时候并不会注意到这一点。这一方面是因为Delphi提供了丰富的函数使用户不必直接去使用Windows

3、API;另一方面即使使用WindowsAPI,由于Delphi把API函数和其它WindowsDLLs函数重新组织到了几个库单元中,因而也不必使用特殊的调用格式。4.1.2为什么使用DLL?在Windows中使用动态链接库的一些原因:(1)如果不同的程序使用相同的DLL,只需将DLL在内存中装载一次,这样节省了系统内存。(2)可以提供DLL的不同版本,代替当前的DLL。如果DLL中的子例程有相同的参数,可以用新版本的DLL运行程序,而不需要重新编译它。这些通用的优点可以应用于多种情况中。如果我们有一些复杂算法,或一些复杂窗体,它们是多个应用程序所需要的,可以将它们存储在DLL中。这样做,在同时

4、运行多个使用该DLL的程序时,可以减小执行文件的规模,并节省一些内存。此外,DLL被广泛地使用,还基于下面的一些原因:(1)DLL作为一种基于Windows的程序模块,不仅可以包含可执行代码,还可以包括数据和各种资源等,扩大了库文件的使用范围。(2)DLL技术对于开发大型软件系统也有可用之处。一个大型系统,如果用一个执行文件完成,程序将很庞大,而且可能有许多重复的功能。如果将程序分成一系列的主程序和DLL,可以减少开发的工作量。而且由于每个模块减小了,访问的速度也提高了。(3)DLL另一个用途是支持世界各国的语言。(4)将一些功能模块做成DLL后,如果需要对系统进行升级,只要将个别DLL进行升

5、级,然后用新的DLL文件覆盖掉旧的DLL文件就可以了,而不需要将整个系统进行重新编译和链接。(5)DLL给程序开发带来了很多灵活性。(6)DLL还独立于编程语言。例如,在Delphi环境中开发的DLL程序可以在VisualC++环境中方便地使用;同时,在Delphi环境中也可以方便地使用在VisualC++中开发的DLL。4.1.3系统DLL的含义DLL是Windows操作系统的一个关键性的技术基础。因为每一个应用程序对于从建立窗口到产生输出的任何一步操作都需要使用系统DLL,所以每个程序都必须与那些DLL链接。4.1.4DLL与EXE文件之间的区别正常的执行文件(EXE文件)与动态链接库(D

6、LL文件)之间的区别。对于大部分EXE文件与DLL文件来说,它们的内部结构是相同的。只是当将DLL装载到内存中时,情况才发生了改变。执行程序与DLL之间的主要区别是:DLL即使装载到内存中,也不是运行程序。它只是其它程序可以调用的过程与函数集合。这些过程与函数使用了调用程序的堆栈。程序与库之间的另一个区别是,库不能建立自己的堆栈――它使用调用它的程序的堆栈。在Win32中,因为DLL映射于应用程序的地址空间中,所以DLL的任何内存分配或建立的任何全局数据都驻留在主进程的地址空间中。4.1.5DLL编写规则由外部程序调用的DLL函数或过程必须遵照以下这些规则:(1)它必须列在DLL的export

7、s句子中。这使子例程在DLL外部就可以看到。(2)输出函数还应该被声明为stdcall,以使用标准的Win32参数传递技术来代替优化的register参数传递技术。(3)DLL的参数类型应是缺省的Windows类型,使得该DLL能应用于其它开发环境中。(4)DLL可以使用全局数据,该数据将不会通过调用应用程序来共享。每当应用程序装载DLL时,它在自己的地址空间中存储着DLL的全局数据。4.2在De

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

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

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