dll:Cardinal
pp:function(x,y:integer):integer
begin
dll:=LoadLibrary(PChar('xx.dll'))
if dll<>0 then
begin
@pp:=GetProcAddress(dll, 'abc')
if @pp<>nil then
Edit3.Text:=inttostr(pp(strtoint(Edit1.Text),strtoint(Edit2.text)))
FreeLibrary(dll)
end
end
因为delphi编译的exe是基本不依赖别的dll的。另,面向对象语言,由于继承、多态等因素,VCL库中本身含有丰富的功能,虽然你的程序只用了其中的少部分,但封装时自然是有不少冗余的。所以delphi编译的程序较大!可以用exe文件压缩工具将其压缩到30%左右。
hd_csqm:=LoadLibrary('evcrypt.dll')try
if hd_csqm<>0 then
begin
crt_sqm:=GetProcAddress(hd_csqm,'EncryptString')
showmessage(crt_sqm('123456','123456787909'))
end
else
showmessage('找不到函数')
finally
FreeLibrary(hd_csqm)
end
这样子试试
应该是参数的问题,你可以试试调一个没有参数的函数,或者参数采用默认值形式的函数;
如果是参数的问题的话,可能要把String 改成pchar
还有一个问题就是 你的DLL里面 uses 第一个是不是 ShareMem
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)