您的位置:首页 > 编程语言 > Delphi

Delphi封装类到DLL

2012-08-30 21:32 141 查看
一个公共单元

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: