delphi 使用dll如何編程,請高手指點、。

解决方案 »

  1.   

    new->dll wizard建一个DLL工程uses里首先加上sharemem工程文件里将要导出的接口写在exports那里面写实现就可以了不可能说的非常细致楼主可以到网上下载一个例子来看看DLL代码: library Project2;  uses
      SysUtils,
      Classes,
      Dialogs,
      Forms,
      Unit2 in 'Unit2.pas' {Form2};  {$R *.RES}
      var
      ccc: Pchar;  procedure OpenForm(mainForm:TForm);stdcall;
      var
      Form1: TForm1;
      ptr:PLongInt;
      begin
      ptr:=@(Application.MainForm);
      ptr^:=LongInt(mainForm);
      Form1:=TForm1.Create(mainForm);
      end;  procedure InputCCC(Text: Pchar);stdcall;
      begin
      ccc := Text;
      end;  procedure ShowCCC;stdcall;
      begin
      ShowMessage(String(ccc));
      end;  exports
      OpenForm;
      InputCCC,
      ShowCCC;
      begin
      end.
    调用方源代码:
       unit Unit1;  interface  uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;
     
    type
      TForm1 = class(TForm)
      Button1: TButton;
      Button2: TButton;
      Edit1: TEdit;
      procedure Button1Click(Sender: TObject);
      procedure Button2Click(Sender: TObject);
      private
      { Private declarations }
      public
      { Public declarations }
      end;  var
      Form1: TForm1;  implementation  {$R *.DFM}
      procedure OpenForm(mainForm:TForm);stdcall;External'project2.dll';
      procedure ShowCCC;stdcall;External'project2.dll';
      procedure InputCCC(Text: Pchar);stdcall;External'project2.dll';  procedure TForm1.Button1Click(Sender: TObject);
      var
      Text: Pchar;
      begin
      Text := Pchar(Edit1.Text);
      // OpenForm(Application.MainForm);//为了调MDICHILD
      InputCCC(Text);//为了实验DLL中的全局变量是否在各个应用程序间共享
      end;  procedure TForm1.Button2Click(Sender: TObject);
      begin
      ShowCCC;//这里表明WINDOWS 32位应用程序DLL中的全局变量也是在应用程序地址空间中,16位应用程序或许不同,没有做实验。
      end;