求助,还是关于调用dll问题(100分)

  • 主题发起人 主题发起人 plf22
  • 开始时间 开始时间
P

plf22

Unregistered / Unconfirmed
GUEST, unregistred user!
昨天上论坛问了一下,那个dll是用CB写的,我调用不成功,于是请人把那个dll,用VC重新
编译了一个,在Delphi中调用,结果说无法定位程序输入点RS15_Decode于动态链接库RS_dec.dll
上。
这个Dll文件名为RS_dec.dll,里面要调用的函数为
int RS15_Decode( int sort, unsigned char *rsbuff );
我在Delphi中写成
function RS15_Decode(Sort:integer;rsbuff:PChar):integer;external 'RS_dec.dll' name 'RS15_Decode';
不知道是不是写错了,望各位帮帮忙!
 
加个 stdcall 试一试:
function RS15_Decode(Sort:integer;rsbuff:PChar):integer
stdcall;
external 'RS_dec.dll' name 'RS15_Decode';
 
还是一样,不行,我担心是我在声明时的函数和它的原型不一致
 
有可能,你用 ExeScope 查看一下
 
怎么看?
 
int RS15_Decode( int sort, unsigned char *rsbuff );

function RS15_Decode(Sort:integer;rsbuff:PChar):integer;external 'RS_dec.dll'
我能否用rsbuff:PChar代替unsigned char *rsbuff?
 
函数名的大小有关,在dll中识别大小函数名
 
我特别注意大小写问题,应该不会错
 
用TDump看看函数名。
 
TDump怎么用?各位说的东东我全没用过,指点一下
 
TDump aaa.dll aaa.txt
 
用Tdump看到了,是不是最后一段里面的那个,name已经变成了?Rs15decode@@YAHHPAE@Z
难怪调用不了,现在那个错误是没出来了,不过不知该怎样才算是给了正确地参数
int RS15_Decode( int sort, unsigned char *rsbuff );
我在Delphi中写成
function RS15_Decode(Sort:integer;rsbuff:PChar):integer;external 'RS_dec.dll' name 'RS15_Decode';
我这样调用:
var i:integer;
pp:array [1..15] of byte;
temp:array [1..15] of byte;
p:pchar;
begin
pp[1]:=$48
//该dll应该是用来还原数据包,给他15个数据,应该返回另外的15个数据
pp[2]:=$96;
pp[3]:=$21;
pp[4]:=$43;
pp[5]:=$68;
pp[6]:=$87;
pp[7]:=$A9;
pp[8]:=$0B;
pp[9]:=$0B;
pp[10]:=$0B;
pp[11]:=$0B;
pp[12]:=$0B;
pp[13]:=$0B;
pp[14]:=$0B;
pp[15]:=$0B;
// temp:=pp and $F;
// temp[i+1]:=
p:=@pp[1];
i:=Rs15decode(2,p);
这样运行时错误,各位帮帮忙!
 
谢谢各位,终于搞定了,最感谢BeginDelphi,用Tdump终于知道那个函数原来变了样,
现在可以成功调用了!谢谢
 
后退
顶部