1、创建
library dll;
use
ShareMem, //用string必须引用它,且放在第一个
SysUtils,
Classes;
function test(i: integer): integer; stdcall;//必须加这个
begin
//具体实现
end;
exports
test;//输出函数
注意:1.不能使用string类型,否则涉及到资源释放的问题,使用Pchar代替string。
function test(const i:PChar):Boolean;stdcall;
2、调用
2.1静态调用
在implementation下添加调用函数声明
function test(i: integer): integer; stdcall; external 'dll.dll';
procedure TForm1.btnClick(Sender: Tobject);
begin
showMessage(inttostr(test(1)));
end;
2.2动态调用
procedure TForm1.btnClick(Sender: Tobject);
type
Taddc = function (参数): 返回值类型; stdcall;
var
nHandle: THandle;
sDllFile: string;
p: Taddc;
begin
sDllFile := 'Dll.dll';
nHandle := LoadLibrary(pChar(sDllFile));
if nHandle = 0 then exit;
try
p := GetProcAddress(nHandle, pChar('test'));
if @p <> nil then
begin
Result := p(参数);
end;
finally
FreeLibrary(nHandle);
end;
end;