VC写得dll,参数为结构,delphi如何调用?

macrogu 2001-12-21 03:50:16
VC写得dll,参数为结构,delphi如何调用?
c结构如下
typedef struct {
char Name[32];
short FieldNo[10] ;
short FieldCount;
}K_INFO;
c函数声明为:
int __stdcall Test(K_INFO* Info);

我在delphi里结构为
TYPE
K_INFO = RECORD
Name : ARRAY[ 0..31 ] OF char;
FieldNo: ARRAY[ 0..9 ] OF smallint;
FieldCount:smallint;
END;
PK_INFO=^K_INFO;
我在delphi里声明为
Function Test(Info:PK_INFO):integer;stdcall;external 'Mydll.dll' name 'Test';

调用时:
var
Info:K_INFO;
ret:integer;
begin
Info.Name:='test';
Info.FieldCount:=0;
ret=Test(@Info);
end;

不成功,出现保护错!
用引用,不传地址我也试过,传实参我也试过,一样!
各位delphi高手,请帮忙!
...全文
104 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
macrogu 2001-12-23
  • 打赏
  • 举报
回复
谢谢各位,我去试试看!
liaokuo 2001-12-21
  • 打赏
  • 举报
回复
是内存的对起结构
pack ed record 中结构以2字节对起
我个人感觉这东西没有,d5和vc5 结构都是以偶数对起内存
要经常length(var)来看看长度是否相等
我曾经调试过2个月的vc dll
真是痛苦4了
lianghu 2001-12-21
  • 打赏
  • 举报
回复
楼上的老大们,这个packed record 与 record 有什么区别?
liang_z 2001-12-21
  • 打赏
  • 举报
回复
同意伴水!
用Packed Record
调用时你那个应该是对的!
minl 2001-12-21
  • 打赏
  • 举报
回复
关注..

thedream 2001-12-21
  • 打赏
  • 举报
回复
关注..
王集鹄 2001-12-21
  • 打赏
  • 举报
回复
TYPE
K_INFO = PACKED RECORD
Name : ARRAY[ 0..31 ] OF char;
FieldNo: ARRAY[ 0..9 ] OF smallint;
FieldCount:smallint;
END;


5,931

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧