微慑信息网

[Delphi] delphi创建dll

一、 用Delphi创建DLL
  Delphi的DLL创建并不复杂,下面向大家介绍Delphi的DLL创建方法。
  (1)首先创建一个新的DLL项目(NewProject)project1,文件头部为:
library Project1;
  (2)USES语句后面加入ExPorts语句,指明调用DLL的函数名,形式为:
exports
checkpwd name 'checkpwd';
  (3)在DLL的Pas文件中Type……End后加入该DLL的函数或过程的声明,形式如下:
FunctionName(argment):Boolean;export;  
  该函数也可以存在于另一个pas文件中(如Unit1.pas),此时只需在项目文件中加入:
uses
Unit1 in 'Unit1.pas' {Form1};
  值得注意的是,该函数或过程应加入窗体的Create和Free(产生和释放)方法。
  (4)对项目进行编译即形成DLL文件,可被其它项目调用。
二、Delphi中DLL的调用
  调用DLL有两种方法,一种是在应用程序装载时调用,另一种是在应用程序运行时调用。
  (1) 装载时调用DLL
  在调用DLL的Pas文件中,对DLL函数进行外部声明,声明应位于Implementation后,形式如下:
Implementation
Function functionname(argment):Boolean;far;External 'DllName';  
  其中External关键字后面的引号内是DLL的文件名,该文件一般应放在系统的system目录下,或与调用它的项目同一目录。声明以后即可在Pas文件任何地方引用DLL函数。
  装载时调用DLL的优点是速度较快,程序间也可共享代码。
  (2) 运行时调用DLL
  DLL的另一种调用方法是在运行时调用。这种方法要调用到Windows的API函数LoadLibrary,GetProcAddress,FreeLibrary等。此方法主要用于调用其它语言,特别是C++编译的DLL。
  假定你欲调用的DLL中包括一个函数:
Function checkpwd(pwd:string):boolean;export;  
  那么,首先在欲调用DLL的程序Type类型声明处加入一句:
Type
Tcheckpwd= function(pwd:string):boolean;  
  此句的作用如同C++中声明的函数指针。
  然后定义如下变量∶
Var
  aptr:TFarproc;
lhnd:THandle;
flag:boolean;
  其中Aptr,lhnd两变量声明必须有,flag是DLL函数返回值,视情况而定。在调用DLL处加入如下语句进行DLL装载:
lhnd:=Loadlibrary('路径:DLL文件名');{如lhnd:=Loadlibrary('c:project1.dll');
aptr:=GetprocAddress(lhnd,'checkpwd');  
  下面可直接调用DLL了:
flag:=Tcheckpwd(aptr)( 'pwd');{根据函数填相应的变量参数}  
  调用完以后,用FreeLibrary释放DLL占用的内存:
FreeLibrary(lhnd);

本文标题:[Delphi] delphi创建dll
本文链接:
(转载请附上本文链接)
http://vulsee.com/archives/vulsee_2008/0922_573.html
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » [Delphi] delphi创建dll
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

微慑信息网 专注工匠精神

访问我们联系我们