为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
MYYA 2019-05-16 10:10:24
C++结构体中的指针转换成c#类型
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞


IntPtr

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



查看完整回答
反对 回复 2019-05-17
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

public 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);


 




查看完整回答
反对 回复 2019-05-17
  • 3 回答
  • 0 关注
  • 1153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信