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

    技术2022-05-11  29

    对于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++程序员,标出结构体的字节对齐方式;如果对方不是,用图表的方式标示出结构体的内存分布结构。 

    最新回复(0)