delphi动态调用DLL

delphi动态调用DLL,第1张

var

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


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/55093.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-26
下一篇2023-02-26

发表评论

登录后才能评论

评论列表(0条)

    保存