荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: 利用Delphi创建及使用动态链接库
发信站: BBS 荔园晨风站 (Thu Jan 21 23:14:00 1999), 转信


   动态链接库(DLL)是Windows中最重要的部分之一,Windows中的运
行程序可以共享DLL中的子例程,从而使应用程序可以共享代码,减少
内存占用。本文简要介绍用Delphi创建及使用DLL。

    一、创建动态链接库

    1.建立一个新的工程文件
    由于此工程只是个库文件,因此并不需要Form。首先选择主菜单V
iew|Project Manage, 将自动生成的Unit1及Form1移去,然后选择Fil
e|Save Project As,将此工程取名为 Mydl.d pr存盘(命名可任意 ),
当系统提问是否保存Unit1时回答‘NO’,再选择View|Projectourc
e,将其代码修改如下:
    library  Mydll;
      uses   WinTypes;
      begin
      end.
    此文件与一般工程文件主要不同之处在于将标识符"program"改
为"library"。
    2.向动态链接库中加入被多个应用程序公用的子例程(过程及函
数 )
    建立一个新的Unit,将被多个应用程序公用的子例程在这里声明
及实现。注意在这个Ui t的Interface部分声明的例程尾部要加关键
字"export",表示此例程能够被"引出",也就是能被其它应用程序调用
。例如:有一个公用函数Plus,其作用是将两个整数求和,此Unit的代
码如下:
    Unit    Content; {公用例程单元,命名可任意}
    interface
    function  plus (a,b:integer):integer;export;
    implementation
    function  plus (a,b:integer):integer;
      begin
       Result:=a+b;
      end;
    end.

    3.引出公用例程
    选择View|Project Source,在Mydll.dpr的uses部分之后加入:
    exports
    plus; {将公用例程引出}
    完整的工程文件如下:
    library  Mydll;
    uses    WinTypes,
            Content   in  ‘CONTENT.PAS’;
    exports
     plus;
    begin
    end.
    以上就完成了DLL库的创建,选择Compile将其编译。
    二、使用动态链接库
    DLL中的资源可以被多个EXE文件公用,现在可以用Delphi建立多
个应用程序,共同使用y dll.dll中的函数Plus:

    1.建立一个新的工程文件 Usedll.dpr, 移去所有的Unit及Form

    2.为引用 Mydll.dll 中的函数Plus,建立一个新的Unit,其目的
是为了说明要引用的例程存在于哪个DLL库中(用关键字"external"),
此Unit的代码如下:
    Unit  useunit;  {这是使用DLL的单元}
    interface
    function  plus (a,b:integer):integer;
    implementation
    function  plus; external ‘Mydll’;
    {说明这个函数是在外部Mydll.dll库中实现的}
    end.
    可以看出,对于外部例程,在interface部分的声明与普通例程一
样,但是在implementai on部分要使用关键字"external",表示此例程
是在程序外部实现的。
    3.在需要使用函数Plus的Unit中,只要在其Implementation部分
用Uses将useunit包含进来即可。
    例如:新建一Form,加入Edit及Button控件,为Button增加OnClick
事件,此Form对应Uni的implementation代码如下:
    implementation
      {$R *.DFM}
    uses useunit;     {包含useunit单元}
      procedure TForm1.Button1Click(Sender: TObject);
      {Button1的OnClick事件}
    begin
      Edit1.Text:=IntToStr (Plus (10,20));
      {使用DLL库中的函数}
    end;
        end.
    将此工程编译,生成Usedll.exe,运行时按下Button即可看到Edit
控件的Text变成了30。
    依上例可以建立多个EXE文件,共同使用Mydll中的函数Plus,由此
可以看出动态链接库的优越性,特别是在开发大型软件时,动态链接库
经常使用。
    以上程序在Delphi 1.0/Win3.2、Delphi2.0/Win95上运行通过
--

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店