猿问

C++结构体中的指针转换成c#类型

C++结构体中的指针转换成c#类型


MYYA
浏览 1154回答 3
3回答

潇湘沐

IntPtr要读取内容的时候,弄一个DWORD数组或者BYTE数组,然后Marshal.Copy可以把这个IntPtr的内容复制到这个数组里(如果C++中这个指针是指向一个变量而不是指向多个变量,那么将数组的大小设为1即可),然后访问数组就可以得到值了。Marshal.Copy可以从IntPtr复制到数组或者从数组复制到IntPtr,注意复制的时候字节数不要搞错就可以了。

料青山看我应如是

1234567891011121314151617181920public struct GT_DISCOVERY_INFO{  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]  public char[] byDevModel;  public Int32 iDevType;  public Int32 iPort;  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]  public char[] byIP;  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]  //假定GT_MACADDR_LEN=4  public char[] byMACAddr;  。。。。。。};[DllImport("xxxxx.dll")]public static extern Int32 GT_DEV_Login(    string pchDEVIP,    UInt16 wDEVPort,    string pchUserName,    string pchPassword,    ref GT_DEV_DEVICECFG lpDeviceInfo,    ref Int32 error); 
随时随地看视频慕课网APP
我要回答