c#调用C++DLL类型转换,结构体内含结构体数组,怎么声明?

C++
typedef struct abc
{
byte a[22];
ddd struct[22]; 这是结构体里的另外一个结构体

}
C#转译
public struct abc

{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 22, ArraySubType = UnmanagedType.I1)]
byte []a;
ddd!!!!这个结构体怎么定义!!!
}
我这样写应该懂我的意思吧!!!

不知道你的ddd的结构原型是怎样,你需要预先在C#里定义好 ddd,才能在abc里声明,如果ddd内还嵌套,请依次类推追问

假如
public struct ddd
{
int a;

}
主要不知道ddd的长度怎么声明
就像C++中byte a[22]
在C#中要写成
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 22, ArraySubType = UnmanagedType.I1)]
byte []a;

追答

{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 22, ArraySubType = UnmanagedType.I1)]
byte []a;
[MarshalAs(UnmanagedType.ByValArray,SizeConst=22)]
public ddd [] struct;
}
//SizeConst是数组长度

温馨提示:答案为网友推荐,仅供参考
相似回答