- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
非本人原创,从其他网络上下载而来的
一、DLL动态链接库文件的知识简介:
????????????????? Windows的发展要求允许同时运行的几个程序共享一组函数的单一拷贝。动态链接库就是在这种情况下出现的。动态链接库不用重复编译或链接,一旦装入内存,Dlls函数可以被系统中的任何正在运行的应用程序软件所使用,而不必再将DLLs函数的另一拷贝装入内存。 任何应用程序都可以共享由装入内存的DLLs管理的内存资源块。只包含共享数据的DLLs称为资源文件。在Delphi中,一般工程文件的头标用program关键字,而DLLs工程文件头标用library 关键字标识(ActiveX控件也是一样)。不同的关键字通知编译器生成不同的可执行文件。用program关键字生成的是.exe文件,而用library关键字生成的是.dll等其他文件;假如要输出供其它应用程序使用的函数或过程,则必须将这些函数或过程列在Exports子句中。而这些函数或过程本身必须用export编译指令进行编译。、
使用DLL动态链接库技术主要有以下几个原因:
1、减少可执行文件的大小;
2、实现资源共享;
3、便于维护和升级
4、比较安全
?
二、DLL动态链接库文件的分类:
根据DLLs完成的功能,我们把DLLs分为如下的三类:
1、完成一般功能的DLLs;
2、用于数据交换的DLLs;
3、用于窗体重用的DLLs。
?
三、DLL动态链接库文件的基本格式如下:
library? Project1; ??// 定义DLL文件的文件名,也是库名。和Unit差不多,会随保存时的文件名一起改变
uses
SysUtils,
Classes,
? Unit1 in Unit1.pas {Form1}, // 创建的窗体文件
? Unit2 in Unit2.pas;? ?// 创建的单元文件
?
Type
?? // 定义自己的数据类型
?
Var
? ?// 定义变量。
?
??? ?// 自己定义的函数
function?? TestDll(i:integer):integer;stdcall; // 与平时的编写差不多,只是多了一个stdcall参数
begin
Result := i+i;
end;
?
{$R *.res}? // 设置版本信息Project|options,必须有{$R *.res}才能显示。也可以位于函数的定义之前。
?
???? // 自己定义的函数
exports ??// 将函数或过程输出,供其他程序使用。不用写参数和调用后缀。函数直接用‘,‘分开;
????? TestDll;
begin
end.
?
四、创建和调用DLL动态链接库的基本步骤:
1、点击【File】—【New】—【Other】菜单项,打开【New Items】,选择【New】;
2、选择【Dll?Wizard】选项卡,点击ok,DLL工程创建成功。
3、添加代码。
4、按【Project】的【Build Project1】生成DLL动态链接库文件Project1.DLL。
5、调用DLL动态链接库文件。
???????????? ?? //调用程序和Project1.dll在同一个目录中,在implementation下面写, external后指定了Delphi.dll的位置
?????1、function TestDll(i:integer):integer;stdcall; external ‘Project1.dll’;
???????? ??? ? //TestDll 必须跟Dll中函数名一样,区分大小写;Project1不区分大小写;
??? ?2、使用就跟普通的函数是一样的。 ?
?
五、编写DLL动态链接库时,应该注意的事项:
1、在DLL中编写的函数或过程都必须加上stdcall调用参数。
?????????????????????? 在Delphi 1或Delphi 2环境下该调用参数是far。从Delphi 3以后将这个参数变为了stdcall,目的是为了使用标准的Win32参数传递技术来代替优化的register参数。忘记使用stdcall参数是常见的错误,这个错误不会影响DLL的编译和生成,但当调用这个DLL时会发生很严重的错误,导致操作系统的死锁。原因是register参数是Delphi的默认参
数。如果确实,就会变成register了。
?
2、所写的函数和过程应该用exports语句声明为外部函数。
?????????????????????? 正如大家看到的,TestDll函数被声明为一个外部函数。这样做可以使该函数在外部就能看到,具体方法是单激鼠标右键用“快速查看(Quick View)”功能查看该DLL
您可能关注的文档
- 第八章 ssh&scp.pdf
- 第八章 Talend使用步骤.pdf
- 第八章 Verilog HDL入门基础之模块级建模.pdf
- 第八章 WINDOWS98-2000驱动程序编写方法(上).ppt
- Dell EqualLogic高可用性及数据保护解决方案.pdf
- 第八章 window编程基础.pdf
- 第八章 word练习题-1.docx
- 第八章 XN1202_CN 2.2.pdf
- 第八章 报表主要取数类型解析.pdf
- 第八章 财务报表补录方法.ppt
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)