C#中的封送C数组
可能重复:
在c#中编组c结构
实际C结构:
typedef struct procedure { char code[8]; }procedure; typedef struct p45_cldxed24 { procedure p45_cldxed[8]; }p45_cldxed24;
p45_cldxed24的等效C#结构是什么? 具体来说,你将如何编组arrays?
检查一下
它是否正确?
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] struct p45_cldxed24 { [MarshalAsAttribute(UnmanagedType.LPArray, ArraySubType=UnmanagedType.Struct,SizeConst = 8,SizeParamIndex=0)] procedure[] p45_cldxed; }
我相信代码如下:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] struct p45_cldxed24 { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] procedure[] p45_cldxed; }
这里的关键是MarshalAs
属性。