delphi 中 DLL 操作

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.Dll中不能直接返回string,除非引用ShareMem单元,发布程序时需要包含BORLNDMM.DLL


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;





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值