c#调用C++DLL类型转换,结构体内含结构体数组,怎么声明?
C++typedefstructabc{bytea[22];dddstruct[22];这是结构体里的另外一个结构体}C#转译publicstructabc{[Marsh...
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!!!!这个结构体怎么定义!!!
}
我这样写应该懂我的意思吧!!! 展开
typedef struct abc
{
byte a[22];
ddd struct[22]; 这是结构体里的另外一个结构体
}
C#转译
public struct abc
{
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 22, ArraySubType = UnmanagedType.I1)]
byte []a;
ddd!!!!这个结构体怎么定义!!!
}
我这样写应该懂我的意思吧!!! 展开
1个回答
展开全部
不知道你的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是数组长度
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询