Delphi调用VC++DLL数据类型问题,boolean=bool byte=byte(delphi=vc++)可是不行? (100分)

  • 主题发起人 主题发起人 lglhsy
  • 开始时间 开始时间
L

lglhsy

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi的boolean 对应 Vc++的bool
Delphi的byte 对应 Vc++的byte
=========================================================================
VC++在记录结构体里的bool与byte,在Delphi用boolean与byte调用会有异常...
Delphi记录结构体里用integer与integer对应,调用返回正确,可是返回数据不对...
=========================================================================
Delphi调用VC++DLL 函数时一定要对应数据类型吗?
可是对应数据类型也不行?
要用什么样的数据类型呢?

在VB里都可以...DLL应该没有问题!
各位大侠救救我吧!...
 
Delphi也有BOOL类型,可对应VC的BOOL类型,长度为4
而Boolean类型长度为1,当然会出错了
VC中没有integer,只有INT(C++里的),int(c语言的),如果你的返回数据错误
你可以在delphi中用word试一下
 
同意only you,用BOOL
 
那byte呢?
BOOL我试试...
 
BOOL是可以
byte和wrod还有枚举都会有异常,
用integer没有异常,可是结果不对...
 
longint或int64再试一下
 
byte和word不应该有问题呀
 
记录结构体里的枚举用改用integer没有异常,返回数据好像是对了....
为什么会是这样?
 
还有一个word改成integer才行...
 
word dword 两种语言都有.
 
我也做过VC和Delphi直接互相调用的情况呀!怎么没有碰到你说得问题?
你还是贴点具体的函数吧。
 
// Structure for user record.
type USER_RECORD=record
ID :SI_ID;
templateVector :SI_TEMPLATE;
authorityLevel :integer;//SI_AUTHORITY_LEVEL;枚举改成integer
rejectThreshold :SI_REJECT_THRESHOLD;
timeZone :SI_TIME_ZONE;
end;
===========
var
ur:RSI_USER_RECORD;
SI_RESULT:= GetUserRecord(mChnl,@id,@ur);
SI_RESULT 返回成功 用integer返回数据ur是对...
authorityLevel用枚举返回数据ur是错误的...

怎么会这样,VB里调用没有这个问题?
byte也是这样,
boolean用bool后是可以...


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