日期:2014-05-17  浏览次数:20811 次

C#调用C++结构体转换问题
各位大神,在使用C#调用一个C++的库的时候,其中有个参数是一个结构体,结构体里面有一个数组:
typedef unsigned char BYTE;
typedef struct{
BYTE byRes1[20];
}ANTS_NET_DVR_DEVICEINFO

这个结构该在C#怎么定义?

------解决方案--------------------
引用:
C# code?1234  public struct ANTS_NET_DVR_DEVICEINFO    {        public byte []byRes1 = new byte[20];    }

这种问题网上搜搜一大堆,居然还能给出这么幼稚的答案。
    public struct ANTS_NET_DVR_DEVICEINFO
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public byte[] byRes1;
    }

------解决方案--------------------
试试这样的
  public struct ANTS_NET_DVR_DEVICEINFO
    {
        [MarshalAs(UnmanagedType.ByValArray,SizeConst=20)]
        public char[] byRes1;
    }

------解决方案--------------------

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ANTS_NET_DVR_DEVICEINFO
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
    public char[] cColorName;
}


希望可以解决你的问题O(∩_∩)O~