如何调用如下DLL(100分)

  • 主题发起人 主题发起人 ccweifen
  • 开始时间 开始时间
C

ccweifen

Unregistered / Unconfirmed
GUEST, unregistred user!
已知在Machine.dll中有如下函数:
函数名 MachineIsOnLine
函数功能 检测考勤机是否在网
C声明格式 BOOL MachineIsOnLine(int MachNo)
传入参数说明 MachNo: 考勤机号
返回值说明 True 考勤机在网False 考勤机不在网

我在Delphi5中如下调用:
function MachineIsOnLine(MachNo:integer):Boolean;stdcall;external 'Machine.dll' name 'MachineIsOnLine';

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if MachineIsOnLine(1) then
showmessage('ON Line')
end;
出现如下错误:
Access violation at address xxxxxxx in module 'Machine.dll'.Read of address xxxxxxxxx

请问高手该如何调用?
 
machine.dll文件的具体路径要写好
 
Machine.dll和执行文件在同一目录下,不用写路径的。
 
是不是dll不是delphi编的,看是否等于1怎么样
ByteBool,wordbool转换一下看看
if MachineIsOnLine(1)<>0 then
 
可能用C写的
 
很可能是函数名不对,或者是Dll版本不对,里面枚包括你要找的函数:)
 
是不是dll不是delphi编的,看是否等于1怎么样
ByteBool,wordbool转换一下看看
if MachineIsOnLine(1)<>0 then
很可能是函数名不对,或者是Dll版本不对,里面枚包括你要找的函数:)


 
BmwHans1: 看到你如此的回复,我对大富翁快失去信心了。
 
能否把dll发过来,我帮你看看??

litianyou@263.net
 
function MachineIsOnLine(MachNo:integer):Boolean;cdecl;external 'Machine.dll' name 'MachineIsOnLine';
 
little_five_gqw正确
 
1、c的bool对应delphi的 longbool
2、c没有指定stdcall,那么就是cdecl
 
1. 很可能是函数名不正确, 因为用C++编译器编译的
函数的最终函数名一般都经过修饰.可以用Execope打开machine.dll看看;
2. 如Pipi所说;
3. 定义接口单元有误

 
多人接受答案了。
 
后退
顶部