Type GX_MESSAGE_INFO
MessageCode As Integer
ChannelNo As Integer
Parameter(6) As Integer
End
主方法中这样引用
Dim MessageBuffer As GX_MESSAGE_INFO
请问转成C#怎么样写?是不是要赋值?怎么样赋值?
我把它转成C#后是这样:
public struct GX_MESSAGE_INFO
{
public int MessageCode;
public int ChannelNo;
public int[] Parameter;
}
主方法中引用是这样:
Class1.GX_MESSAGE_INFO MessageBuffer;
但是都没有赋值,而且运行时,C#项目报错:
检测到 PInvokeStackImbalance
Message: 对 PInvoke 函数“TTSService!TTSService.Form1::GX_GetMessageForWindows”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
错误出现在:while (GX_GetMessageForWindows(0, MessageBuffer) == Class1.GX_OK)
此方法是引入的DLL文件
[DllImport("GxUsb.dll")]
private static extern int GX_GetMessageForWindows(int WaitTime, TTSService.Class1.GX_MESSAGE_INFO pMessageBuffer);
函数原型:unsigned short GX_GetMessageForWindows(unsigned short WaitTime,PGX_MESSAGE_INFO pMessageBuffer)
事件数据结构:
typedef struct _GX_MESSAGE_INFO
{
USHORT MessageCode;
USHORT ChannelNo;
USHORT Parameter[6];
} GX_MESSAGE_INFO, *PGX_MESSAGE_INFO;
请各位大侠教我.......