【发布时间】:2012-01-06 04:14:50
【问题描述】:
当我将此互操作代码从 VB6 移植到 C# 时遇到问题
VB6:
Type Dpi_t
dpiDrSuPsd(DPI_PRG_LEN) As Byte
dpiMyPort As Long
dpiHostAdr(DPI_MAX_HOST) As Byte
dpiHostCnt As Integer
dpiVoidCom As Long
dpiRspBdy As Long
dpiCmData As Long
dpiRdcxData As Long
dpiLstErr As Long
dpiONoUa As Byte
dpiOTooMuch As Byte
dpiOBar As Byte
dpiVPin As Byte
DpiPin As Long
dpiCda(DPI_CDA_LEN) As Byte
dpiEcCyc(DPI_CYC_LEN) As Byte
dpitemp(6000) As Byte
End Type
C#
[StructLayout(LayoutKind.Sequential)]
public struct Dpi_t
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DPI_PRG_LEN)]
public byte[] dpiDrSuPsd;
public long dpiMyPort;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DPI_MAX_HOST)]
public byte[] dpiHostAdr;
public int dpiHostCnt;
public long dpiVoidCom;
public long dpiRspBdy;
public long dpiCmData;
public long dpiRdcxData;
public long dpiLstErr;
public byte dpiONoUa;
public byte dpiOTooMuch;
public byte dpiOBar;
public byte dpiVPin;
public long DpiPin;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DPI_CDA_LEN)]
public byte[] dpiCda;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DPI_CYC_LEN)]
public byte[] dpiEcCyc;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6000)]
public byte[] dpitemp;
}
我无法让它们匹配,我只是没有想法。大家觉得呢?
【问题讨论】:
标签: c# vb6-migration