// ------------------------------------DLL源代码 circle.dproj
-------------------------------------
library circle;
uses
SysUtils,
Classes,
Math;
{$R *.res}
function CircleArea(const radius : double) : double;
stdcall;
begin
result := radius * radius * PI;
end;
exports CircleArea;
begin
end.
// ------------------------------------调用DLL--------------------------------------------------
var
Form1: TForm1;
function CircleArea(const radius : double) : double; external ‘circle.dll‘; // 静态调用
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(‘static: ‘ +
FormatFloat(‘,.00‘,CircleArea(StrToFloat(Edit1.Text))));
end;
procedure TForm1.Button2Click(Sender: TObject);
type
TCircleAreaFunc
= function (const radius: double) : double; stdcall;
var
dllHandle :
cardinal;
circleAreaFunc :
TCircleAreaFunc;
begin
dllHandle
:= LoadLibrary(‘circle.dll‘); // 动态调用
if dllHandle <> 0
then
begin
@circleAreaFunc
:= GetProcAddress(dllHandle, ‘CircleArea‘);
if Assigned
(circleAreaFunc) then
ShowMessage(‘dynamic: ‘ +
FormatFloat(‘,.00‘,circleAreaFunc(StrToFloat(Edit1.Text))))
else
ShowMessage(‘"CircleArea" function not found‘);
FreeLibrary(dllHandle);
// 释放动态库
end
else
begin
ShowMessage(‘circle.dll not found / not loaded‘);
end;
end;
原文:http://www.cnblogs.com/findumars/p/3579636.html