怎么调用Dll中的函数?函数会返回一个boolean型,我要把它传给一个boolean型变量?(50分)

  • 主题发起人 主题发起人 ReStart
  • 开始时间 开始时间
R

ReStart

Unregistered / Unconfirmed
GUEST, unregistred user!
写来看看?
 
//调用Dll部分
function isZero(n:integer):Boolean;stdcall
external 'Project1.dll'
procedure TForm1.Button1Click(Sender: TObject);
begin
if isZero(StrToIntDef(Edit1.Text,999)) then
ShowMessage('为0')
else
ShowMessage('非0');
end;
//生成DLL部分

function isZero(n:integer):Boolean;stdcall;
begin
if n = 0 then
Result := True
else
Result := False;
end;
exports
isZero;
 
判断是否=0就好了嘛

function aProc:integer
var
aBool:Bool;

aBool:=(aProc<>0);

在导出函数声明的地方直接声明为Bool就好了,即使是C的返回为Integer,只要意义是Bool
z直接声明为Bool就可以用的
 
好的,谢谢!
但是我从书上看到这是静态调用的方法,那动态调用别人的dll里的函数该怎么办呢?
 
动态调用也得Get地址,再把地址存到一个变量里才能调用呀,
没加错误判断

type
// TDllFunc=Function (aPara:Integer):Integer;
TDllFunc=Function (aPara:Integer):Bool;
var
aHandle:THandle;
DoSomething:TDllFunc;
aBool:Bool;
begin
aHandle:=LoadLibrary(PChar('DllName'));
DoSomething:=GetProcAddress(aHandle,PChar('ProcName'));
aBool:=DoSomething(123);
...
..
DoSomething:=nil;
FreeLibrary(aHandle);
aHandle:=0;
end;
 
多人接受答案了。
 
后退
顶部