主题:[讨论]求助:C#引用非托管DLL问题,若结构体中含有数组
[em18]
C#引用非托管DLL问题,若结构体中含有数组
[StructLayout(LayoutKind.Sequential)]
public struct CAN_PACKET //若为PRIVATE则出错,因为外部需要访问此类型
{
public uint CAN_ID; // CAN ID field 优先级[8],帧号[3]
public byte rtr; // CAN RTR bit
public byte len;
public byte []data; // Used only if baudrate = 4
public uint time;
public byte reserved;
}
[DllImport("7841.dll")]
public static extern int CanRcvMsg(int handle,ref CAN_PACKET packet);
CAN_PACKET [] rcvMsg=new CAN_PACKET[300];
rcvMsg[rcvPatterns].data=new byte[8];
err = CanRcvMsg(handle[1], ref rcvMsg[rcvPatterns]);//调用封装的DLL函数,含有数组的结构体作为参数
编译没有问题,就是运行中出现“未将对象引用设置到对象的实例“。不知道大家遇到过这种没有,
这种做法正确吗?请大家指教,谢谢了
C#引用非托管DLL问题,若结构体中含有数组
[StructLayout(LayoutKind.Sequential)]
public struct CAN_PACKET //若为PRIVATE则出错,因为外部需要访问此类型
{
public uint CAN_ID; // CAN ID field 优先级[8],帧号[3]
public byte rtr; // CAN RTR bit
public byte len;
public byte []data; // Used only if baudrate = 4
public uint time;
public byte reserved;
}
[DllImport("7841.dll")]
public static extern int CanRcvMsg(int handle,ref CAN_PACKET packet);
CAN_PACKET [] rcvMsg=new CAN_PACKET[300];
rcvMsg[rcvPatterns].data=new byte[8];
err = CanRcvMsg(handle[1], ref rcvMsg[rcvPatterns]);//调用封装的DLL函数,含有数组的结构体作为参数
编译没有问题,就是运行中出现“未将对象引用设置到对象的实例“。不知道大家遇到过这种没有,
这种做法正确吗?请大家指教,谢谢了