VC++结构体定义
typedef struct _RESPONDDATA
{
WORD rdAddress; //设备地址
WORD rdPacketNum; //数据包号
WORD rdLength; //返回的数据长度
BYTE rdRespond; //应答内容,DEV_ACK或DEV_NACK
BYTE rdCmdCode; //命令代码
BYTE rdData[RECV_BUFFER_SIZE]; //返回的数据内容
} RESPONDDATA, *PRESPONDDATA;接口声明:FUNEXPORT RESPONDDATA WINAPI LS_GetRespondData()现在我要用C#调用这个方法,可是一运行就报“方法的类型签名与 PInvoke 不兼容。”这个错误我在C#中是这样定义的
结构体:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct RespondData
{
public Int16 rdAddress;
public Int16 rdPacketNum;
public Int16 rdLength;
public Byte rdRespond;
public Byte rdCmdCode; [MarshalAs(UnmanagedType.ByValArray,SizeConst=4096)]
public Byte[] rdData;
}当时在调用这个方法的时候就报错了,请高手指点一下。
typedef struct _RESPONDDATA
{
WORD rdAddress; //设备地址
WORD rdPacketNum; //数据包号
WORD rdLength; //返回的数据长度
BYTE rdRespond; //应答内容,DEV_ACK或DEV_NACK
BYTE rdCmdCode; //命令代码
BYTE rdData[RECV_BUFFER_SIZE]; //返回的数据内容
} RESPONDDATA, *PRESPONDDATA;接口声明:FUNEXPORT RESPONDDATA WINAPI LS_GetRespondData()现在我要用C#调用这个方法,可是一运行就报“方法的类型签名与 PInvoke 不兼容。”这个错误我在C#中是这样定义的
结构体:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct RespondData
{
public Int16 rdAddress;
public Int16 rdPacketNum;
public Int16 rdLength;
public Byte rdRespond;
public Byte rdCmdCode; [MarshalAs(UnmanagedType.ByValArray,SizeConst=4096)]
public Byte[] rdData;
}当时在调用这个方法的时候就报错了,请高手指点一下。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货