unit Unit1; interface uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type
TForm1 = class(TForm)
btn1: TButton;
btn2: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; function add(a:integer;b:integer):integer;cdecl;external 'mydllForDelphi.dll' ;
function sub(a:integer;b:integer):integer;cdecl;external 'mydllForDelphi.dll' ; implementation {$R *.dfm} //mydllForDelphi.dll c++写的dll中的代码
// extern "C" __declspec(dllexport) int add(int a, int b)
//{
// return (a + b);
//}
//
//extern "C" __declspec(dllexport) int sub(int a, int b)
//{
// return (a - b);
//} procedure TForm1.btn1Click(Sender: TObject);
begin
self.caption:= inttostr(add(,));
self.caption:=self.caption+'///' +inttostr(sub(,));
end; procedure TForm1.btn2Click(Sender: TObject);
// function add(a:integer;b:integer):integer;cdecl;external 'mydllForDelphi.dll' ;
type
TIntFunc=function(a:integer;b:integer):integer;cdecl; //cdecl 不能少
var
Th: Thandle;
Tf:TIntFunc;
Tp,tp2:TFarProc ;
begin
Th:= loadlibrary('mydllForDelphi.dll');
if Th > then
try
Tp:=GetProcAddress(Th, PChar('add'));
if Tp<>nil then
begin
Tf:=TIntFunc(Tp);
Self.Caption:=IntToStr(Tf(,)); {调用TestC函数}
end; Tp2:=GetProcAddress(Th, PChar('sub'));
if Tp2<>nil then
begin
Tf:=TIntFunc(Tp2);
Self.Caption:=Self.Caption+'|||'+IntToStr(Tf(,)); {调用TestC函数}
end; finally
freelibrary(th);
end; end; end.