delphi动态调用DLL
写了个1.dll内容如下libraryProject2;usesSysUtils,Classes;{$R*.res}functionabc(x,y:Integer):In...
写了个1.dll内容如下
library Project2;
uses
SysUtils,
Classes;
{$R *.res}
function abc(x,y:Integer):Integer;stdcall;
begin
Result:=x+y;
end;
exports
abc;
end.
如何动态调用它呢。
比如想实现Edit3.Text:=IntToStr(abc(strtoint(Edit1.Text),strtoint(Edit2.text)));效果,该咋办。
要求动态调用。
不对啊,调试通了,算不对。 展开
library Project2;
uses
SysUtils,
Classes;
{$R *.res}
function abc(x,y:Integer):Integer;stdcall;
begin
Result:=x+y;
end;
exports
abc;
end.
如何动态调用它呢。
比如想实现Edit3.Text:=IntToStr(abc(strtoint(Edit1.Text),strtoint(Edit2.text)));效果,该咋办。
要求动态调用。
不对啊,调试通了,算不对。 展开
2个回答
展开全部
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;
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;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Type
TkillPro=procedure;
//...
var
LibHandle:
THandle;
pro:TKillPro;
DLLFile:string;
begin
DLLFile:='你的DLL文件路径';
LibHandle:=LoadLibrary(pchar(DLLFile));
if
LibHandle<>HINSTANCE_ERROR
then
begin
@pro:=GetProcAddress(LibHandle,'Kill');
if
not
(@pro=nil)
then
Pro;//调用...
end;
end;
TkillPro=procedure;
//...
var
LibHandle:
THandle;
pro:TKillPro;
DLLFile:string;
begin
DLLFile:='你的DLL文件路径';
LibHandle:=LoadLibrary(pchar(DLLFile));
if
LibHandle<>HINSTANCE_ERROR
then
begin
@pro:=GetProcAddress(LibHandle,'Kill');
if
not
(@pro=nil)
then
Pro;//调用...
end;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询