Delphi封装类到DLL

因为个人需要研究了一下封装类到DLL。把他发表出来

用Delphi封装类到DLL。

 

一个公共单元

unit ITest;

interface

type
  IT = interface
    function GetString:string;
    procedure ShowMsg(p:PChar);
    procedure Msg;
  end;

implementation

end.

类单元,这个写在DLL里面的

unit UTest;

interface

uses
  SysUtils,
  Windows,
  ITest;

type
  TTest = class(TInterfacedObject,IT)
  private
    i:Integer;
  protected

  public
    constructor Create; //override;
    destructor Destroy; override;
    function GetString:string;
    procedure ShowMsg(p:PChar);
    procedure Msg;
  published

  end;

implementation

constructor TTest.Create;
begin
  i:=0;
end;

destructor TTest.Destroy;
begin
  inherited;
end;

function TTest.GetString:string;
begin
  Result := Test string;
end;

procedure TTest.ShowMsg(p:PChar);
begin
  MessageBox(0,p,Test,MB_OK);
end;

procedure TTest.Msg;
begin
  Inc(i);
  MessageBox(0,Test MessageBox,PChar(IntToStr(i)),MB_OK);
end;

end.

DLL的prj

library Test;

uses
  SysUtils,
  Classes,
  ITest in ITest.pas,
  UTest in UTest.pas;

{$R *.res}

function TestCreate:IT; stdcall;
begin
  Result := TTest.Create;
end;

exports
  TestCreate; //用此初始化

begin
end.

DLL部分就这样了,到EXE部分调用

uses
  ITest;  //引用单元

function TestCreate:IT; stdcall; external Test.dll name TestCreate; //引用DLL函数

//声明作为测试
  private
    AA:IT;
    BB:IT;

procedure TForm1.FormCreate(Sender: TObject);
begin
  AA:= TestCreate;
  BB:= TestCreate;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Caption := AA.GetString;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  AA.ShowMsg(123abc);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  AA.Msg;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  BB.Msg;
end;

Delphi封装类到DLL

 

 原文:https://www.cnblogs.com/ruguo/archive/2012/08/26/2657821.html

Delphi封装类到DLL

上一篇:九爷带你了解 zabbix 飞信以及机器人报警


下一篇:Hadoop-2.7.0中HDFS NameNode HA实现综述