急急急啊,为什么我的dll动态链接库调用不成功? ( 积分: 49 )

  • 主题发起人 主题发起人 hoyaxun
  • 开始时间 开始时间
晕,那看来不是声明的问题了。传递 PChar 是对的,我没辙了。
 
明显不对吗,开门的密码应该“芝麻”

implementation
var
zhi,ma,kaimen:PChar;

function open_door( sy_id:pchar;door:pchar;delaytime:pchar):integer; stdcall; external 'syris.dll' name 'open_door';


GetMem(zhi,2);
ZeroMemory(zhi,2);
GetMem(ma,2);
ZeroMemory(ma,2);
GetMem(kaimen,4);
ZeroMemory(kaimen,4);
//赋值
open_door(zhi,ma,kaimen);
freemem(zhi,2);
freemem(ma,2);
freemem(kaimen,4);
 
to cactus123456 大哥
你写的,我怎么看不懂啊,你能不能帮我略为讲一下啊
GetMem(zhi,2);
ZeroMemory(zhi,2);
GetMem(ma,2);
ZeroMemory(ma,2);
GetMem(kaimen,4);
ZeroMemory(kaimen,4);
//赋值
open_door(zhi,ma,kaimen);
freemem(zhi,2);
freemem(ma,2);
freemem(kaimen,4);
这一问好部分应该放在什么地方啊,我就放在function open_door( sy_id:pchar;door:pchar;delaytime:pchar):integer; stdcall; external 'syris.dll' name 'open_door';的下面,编译时报错:说GetMem ZeroMemory GetMem 等没有声明,如何处理啊?
 
procedure TForm1.Button1Click(Sender: TObject);
var
zhi,ma,kaimen:PChar;
c:char;
begin

GetMem(zhi,2);
ZeroMemory(zhi,2);

GetMem(ma,2);
ZeroMemory(ma,2);

GetMem(kaimen,4);
ZeroMemory(kaimen,4);
zhi[0]:='6';
zhi[1]:='6';
ma[0]:='5';
ma[1]:='5';
kaimen[0]:='9';
kaimen[1]:='9';
kaimen[2]:='9';
kaimen[3]:='9';
caption:=zhi;
open_door(zhi,ma,kaimen);
freemem(zhi,2);
freemem(ma,2);
freemem(kaimen,4);
end;
祝你开门成功,
下班回家了
 
to cactus123456,大哥,
我不明白你这个是什么意思 ,我这个包是做停车场一个包,我所要的开门,是打开挡闸,我实是不大明白,您这个是什么意思,请大哥指教!
 
cactus123456 同志的方法是向参数所指的内存段中填入你要传递的数据,不过与直接传入 '02'、'0003'什么的没有本质区别。
hoyaxun 可以试一下,返回值应该还是 5。
 
to vvyang 大哥,
我的猜想是;1:要不要用stdcall,2是用pchar还是就指定string(对参数的说明)?
在vb中是这样用的:
Declare Function Open_Door Lib "syris.dll" (ByVal sy_id As String, ByVal door As String, ByVal DelayTime As String) As Integer
我以前的同事用vb开发,用了syris.dll这个库,库的本身应该是没有问题的,大哥,你怎么看?
 
to vvyang 大哥,
function open_door( sy_id:pchar;door:pchar;delaytime:pchar):integer; stdcall; external 'syris.dll' name 'open_door' 这个后面的name 'open_door'是起什么作用啊?
 
“name” 是指定函数在链接库中声明的名称,默认与你调用时声明的函数同名,加不加都成。
cactus123456 同志的方法你试过了吧,应该不成吧。
 
to vvyang 大哥,
cactus123456 同志的方法不成,这个问题我搞定得!主要是另一个函数的参数说明不对,谢谢大哥,请问大哥,你是做那方面开发的啊? 能不能告诉一下你的qq号啊?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
821
import
I
后退
顶部