C#调用dll 参数是结构体 的问题。
[DllImport( "APIHid.dll ")]
public static extern Int16 TransmitAPDU(int hic, ref APDUEx apdu);
调用的时候是这样的。
TransmitAPDU(0, ref apdu);
TransimtAPDU会传出apdu结构,并且结构中的一个数组在函数中赋值。运行的时候到这一步总说我的
“
尝试读取或写入受保护的内存。这通常指示其他内存已损坏”
是我从dll导入时,声明函数参数错误吗?应该怎么写才对?
ps:apdu是一个结构体,如下:
public struct APDUEx
{
public Byte sendlen;
public Byte[] sendbuf;
public Byte recvlen;
public Byte[] recvbuf;
}
------解决方案--------------------你这样试试:
[StructLayout(LayoutKind.Sequential)]
public struct myStru
{
string name;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=16)]
public byte[] bArr;
}