在Delphi应用程序中使用DLL

籽在清心

籽在清心

2016-01-29 14:16

在Delphi应用程序中使用DLL,在Delphi应用程序中使用DLL
 

  Delphi不仅可调用C++产生的DLL模块,同样C++程序也可调用Delphi所产生的DLL部件。这样交互调用,无须重复开发,大大缩短了生产周期。……

  Delphi与VisualBasic、VisualFoxPro等软件一样,属于RAD工具(快速应用开发工具)。适合开发32位或16位/32位混合应用程序。Delphi所使用的程序语言是ObjectPascal,是结构化、面向对象的编译型语言,具有高执行效率、可重用性、易维护性,及较强的异常处理能力、类封装能力等。VB与Delphi相比,VB不能对程序进行编译,只能解释执行,更重要的不同是Delphi具有较强的继承性,Delphi的应用程序可编译DLL模块,VB却无法编译,只能调用C编译的DLL。而Delphi不仅可调用C++产生的DLL模块,同样C++程序也可调用Delphi所产生的DLL部件。这样交互调用,无须重复开发,大大缩短了生产周期。

   一、用Delphi创建DLL

  Delphi的DLL创建并不复杂,下面向大家介绍Delphi的DLL创建方法。

  1、首先创建一个新的DLL项目(NewProject),因为DLL与调用它的主程序要分开编译。如果DLL模块已经建立在调用它的项目中(Project),则将它的窗体(Form)从Project 移出,另建一个新的项目(NewProject)。只需从File菜单选中NewProject项,然后将DLL的Pas模块文件加入到项目中,再将其自动建立的Form1删除即可。

  2、在DLL的DPR文件中把Program关键字改为Library,申明为动态链接库,在USES语句后面加入ExPorts语句,指明调用DLL的函数名。

  3、如果主程序的DPR文件已有DLL窗体CreateForm的语句,则将其去掉。

  4、在DLL的Pas文件中Type......End后加入该DLL的函数或过程的声明,形式如:  FunctionName(argment):Boolean;export;

  该函数或过程应加入窗体的Create和Free(产生和释放)方法。

  5、对项目进行编译即可。

   二、DLL的调用

  调用DLL有两种方法,一种是在应用程序装载时调用,另一种是在应用程序运行时调用。首先介绍装载时DLL的调用:

  (1)装载时调用DLL

Pas文件中,对DLL函数进行外部声明,声明应位于Implementation的Uses语句后,形式如下:

  Implementation

  UsesDialogs;

  FunctionName(argment):Boolean;far;External′CallName′;

  ......

  其中External关键字后面的引号内的字串是DLL的文件名。声明以后即可在Pas文件任何地方引用DLL函数。

  装载时调用DLL的优点是速度较快,程序间也可共享代码。

  (2)运行时调用DLL

  DLL的另一种调用方法是在运行时调用。要调用到Win dows的API函数:loadlibrary,Getprocaddress等。主要用于调用DELPHI和其它语言,特别是C++编译的DLL。

  假定你的DLL包括一个函数:

  FunctionMyFunc(aparam:word):string;export;

  首先在程序Type类型声明处加入一句:

  Type

  TMyfuncΚfunction(aparam:word):string;

  此句的作用如同C++中声明的函数指针。

  然后定义如下变量∶

  Var

  aptr:TFarproc;

  lhnd:THandle;

  s:string;

  其中Aptr,lhnd两变量声明必须有,s是DLL函数返回值,视情况而定。

  在调用DLL处加入如下语句进行DLL装载:

  lhnd:ΚLoadlibrary(′路径ιDLL文件名′);{

如lhnd:ΚLoadlibrary(′c:ιaaιbb.dll′);

  aptr:ΚGetprocAddress(lhnd,′Myfunc′);

  下面可直接调用DLL了:

  s:ΚTMyfunc(bptr)(60);{根据函数填相应的变量参数}

  调用完以后,用FreeLibrary释放DLL占用的内存:

  FreeLibrary(lhnd);

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/delphi/) 
展开更多 50%)
分享

猜你喜欢

在Delphi应用程序中使用DLL

Delphi
在Delphi应用程序中使用DLL

在C#应用程序与DLL交互中使用消息

编程语言 网络编程
在C#应用程序与DLL交互中使用消息

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在应用程序中和Applets小程序中使用archive

编程语言 网络编程
在应用程序中和Applets小程序中使用archive

在Access中使用系统表保存应用程序变量

编程语言 网络编程
在Access中使用系统表保存应用程序变量

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Delphi 应用程序的应用

编程语言 网络编程
Delphi 应用程序的应用

在Java应用程序中使用JNI来监视CPU详解

编程语言 网络编程
在Java应用程序中使用JNI来监视CPU详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

仅用PHP4 Session实现的迷你购物篮(二)

仅用PHP4 Session实现的迷你购物篮(二)

PHP泛安全

PHP泛安全
下拉加载更多内容 ↓