Delphi 调用 VB写的DLL的问题(急)(在线等) ( 积分: 100 )

  • 主题发起人 主题发起人 月明风轻
  • 开始时间 开始时间

月明风轻

Unregistered / Unconfirmed
GUEST, unregistred user!
我要使用VB写的一个DLL
如下:
//总清数据(初始化)
_AllReset@8(int port,HWND h);
h为调用程序窗口的句柄。

//发行,设置卡余额
_FK@16(int port,char* kh,int ye,char *st);
kh为5位卡号的字符串
ye为该卡的初始余额
st为该卡的初始状态
st状态字节的含义
低4位保留
高4位含义:
最高位:1表示卡内余额为负值,0表示为正值
第二位:1为挂失卡,0为未挂失卡
第三位:1为已发行卡,0为未发行卡
第四位:1表示该流水信息是信用消费,0表示是正常消费

//卡加款
_AddMoney@12(int port,char* kh,int jke);
kh为5位卡号的字符串
jke为加款的金额,如果大于32767,则表示为扣款,扣款额为32768-jke
返回一个字符值:
"1":操作失败
"2":挂失卡
"3":未发行卡

我该如何调用才不会出错?

我这样写可是却出错
function _FK@16(port: integer
kh: pchar
ye: integer;st: pchar): boolean
stdcall
external 'STSVR.DLL';

提示:function needs result type

请问专家如何调用呀?很急的哦`~
 
我要使用VB写的一个DLL
如下:
//总清数据(初始化)
_AllReset@8(int port,HWND h);
h为调用程序窗口的句柄。

//发行,设置卡余额
_FK@16(int port,char* kh,int ye,char *st);
kh为5位卡号的字符串
ye为该卡的初始余额
st为该卡的初始状态
st状态字节的含义
低4位保留
高4位含义:
最高位:1表示卡内余额为负值,0表示为正值
第二位:1为挂失卡,0为未挂失卡
第三位:1为已发行卡,0为未发行卡
第四位:1表示该流水信息是信用消费,0表示是正常消费

//卡加款
_AddMoney@12(int port,char* kh,int jke);
kh为5位卡号的字符串
jke为加款的金额,如果大于32767,则表示为扣款,扣款额为32768-jke
返回一个字符值:
"1":操作失败
"2":挂失卡
"3":未发行卡

我该如何调用才不会出错?

我这样写可是却出错
function _FK@16(port: integer
kh: pchar
ye: integer;st: pchar): boolean
stdcall
external 'STSVR.DLL';

提示:function needs result type

请问专家如何调用呀?很急的哦`~
 
我用
regsvr32注册这个DLL
但提示说已经LOAD,
但不能注册`

在DELPHI中Project/Import Type Libbrary 向ADD也出错`~

DLL应该没什么问题的``

也有其他的客户在用的呀~~`
 
提示:function needs result type,

但是VB声明的不是一个函数啊,只是一个过程。
 
函数名里不能有@吧,你用动态调用吧
 
动态调用怎么用呀?

TO sncv7:
VB里的是函数,只不过我没把返回值写上去~`
返回值都是BOOLEAN
 
动态调用
LoadLibrary
GetProcAddress
FreeLibrary
不过,你最好用TDump看一下Export究竟是什么名字
 
to tseug:

Export 就是
_FK@16这样的~
 
这样试试呢,不过,VB的DLL实际上是COM组件,我也没把握
function FK(port: integer
kh: pchar
ye: integer;st: pchar): boolean
stdcall;
external 'STSVR.DLL' name '_FK@16'
 
接受答案了
 
后退
顶部