调用动态连接库参数传递的问题(200分)

  • 主题发起人 主题发起人 wuling
  • 开始时间 开始时间
W

wuling

Unregistered / Unconfirmed
GUEST, unregistred user!
一个用BCB写的动态链接库基本内容如下
typedef struct _STDataBuf
{
int nAddr;
//手持机地址
unsigned char *pSendDataBuf;
unsigned short uSendLen;
unsigned char *pReceiveDataBuf;
unsigned short uReceiveLen;
int nResult;
}STDataBuf;
extern "C" __declspec(dllexport) void __stdcall ReadCurTime(STDataBuf &Param)

。。。执行一些操作
Param.nResult=1;

在DELPHI中调用相应的声明如下
TDataBuf=record
nAddr:integer;

pSendDataBuf:pchar;
uSendLen:word;
pReceiveDataBuf:pchar;
uReceiveLen:word;
nResult:integer;
end;
procedure ReadCurTime(var TDataBuf Param);stdcall;
调用后参数中的nResult没用被赋值
 
在DELPHI中调用相应的声明如下
TDataBuf= packed record
nAddr:integer;

pSendDataBuf:pchar;
uSendLen:word;
pReceiveDataBuf:pchar;
uReceiveLen:word;
nResult:integer;
end;

加上packed关键字
 
禁止记录字段对齐
对齐会把word看作Integer
 
多谢,我现在没法试,晚上试试,分随後加上
 
现在可以了,但为什麽sizeof 返回的是20 如果对其把word看作integer 返回不是应该是
24吗,在BCB中返回的是24
 
后退
顶部