VB调用DLL时传递自定义类型数组参数注意

对于C/C++接口中的自定义类型,要给出对齐方式。如果调用者是C/C++,那么应当指定成相同的对齐方式;非C/C++且无自定义的能力,那么只能用byte数组自己组装和拆卸。
因为某个项目中曾经试图用Java来调用设备的控制接口,在C/C++中很简单的结构/联合体等,在Java中却不得不手工来编码,因为这个转化很耗费时间,与规定的宽限值相差几百万倍,所以不得不作罢;还有手工编码也很浪费开发时间,就百多个简单结构体的转化,两个程序员+三个测试员写了一星期还没做完。

我以前经常写接口,说说心得吧。
1。接口函数要标出调用方式,比如 __stdcall。如果客户可能不是C/C++程序员,最好把这种函数调用方式细节也写出来。
2。结构中用到的类型需要标出字节长度,千万不要来个 int 就行了,鬼知道这个 int 是 int16、int32 还是 int64?
对于char类型,要标出是否有符号位。
对于float类型,要标出它是否是IEEE格式,如果不是,要给出它实际的格式定义。
3。如果对方是C/C++程序员,标出结构体的字节对齐方式;如果对方不是,用图表的方式标示出结构体的内存分布结构。 
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值