最近在做纸币找零设备操作的项目,需要调用一个VB开发的dll。努力一番,有些心得记之。
居然是高丽棒子开发的。唉,什么时候能够国产啊。!?
sensor(7) As Byte 相当于Vc byte sensor[7]
相当于C#
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
byte[] sensor;
类型转换示例
public struct CDMMULTIDISPENSE
{
public byte error_cd;
public byte reject_cd;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
public byte[] sensor;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] count;
}
原VBdll中的类型如下
//Type CDMCBXITEM
//count(MAX_CASSETTE) As Byte ‘Number to dispense
//End Type
//Global lpCbxItem As CDMCBXITEM
//Type CDMMULTIDISPENSE
//error_cd As Byte ‘ Error code
//reject_cd As Byte ‘ Reject code
//sensor(7) As Byte ‘ Sensor code
//count(MAX_CASSETTE) As Byte ‘ Dispensed count
附件
VC++与VB数据类型对应关系
VC++ VB
short Integer
int Long
long Long
UNIT Long
ULONG Long
WORD DWORDLong
WPARAM LPARAMLong
WMSG UMSGLong
HRESULT Long
BOOL Boolean
COLORREF Long
HWND,HDC,HBRUSH,HKEY,等等 Long
LPSTR LPCSTRString
LPWSTR,OLECHARBSTR String
LPTSTR String
VARIANT_BOOL Boolean
unsignedchar Byte
BYTE Byte
VARIANT Variant
有了VC的C#就明白了怎么对应了。