C# 在C语言中封送C数组

C# 在C语言中封送C数组,c#,.net,c,dll,marshalling,C#,.net,C,Dll,Marshalling,可能重复: 实际C结构: p45_cldxed24的等效C结构是什么?具体来说,您将如何封送数组 这是正确的吗? 我相信守则如下: [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] struct p45_cldxed24 { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] procedure[] p45_cldxed; } 这里的关键是Marsh

可能重复:

实际C结构: p45_cldxed24的等效C结构是什么?具体来说,您将如何封送数组

这是正确的吗?
我相信守则如下:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
struct p45_cldxed24
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
    procedure[] p45_cldxed;
}

这里的关键是MarshalAs属性。

@Cody Gray它不是重复的,我只问了那个问题。@CodyGray我让Raghuveer开始一个新问题。你提到的问题是关于字符串的。@Zenexer:同样的问题。我认为它们在上下文中有足够的不同。这是正确的吗?-[StructLayoutLayoutKind.Sequential,CharSet=CharSet.Ansi]struct p45_cldxed24{[MarshalAsAttributeUnmanagedType.LPArray,ArraySubType=UnmanagedType.struct,SizeConst=8,SizeParamIndex=0]过程[]p45_cldxed;}不,正如@Zenexer在他的回答中所说的,您需要ByValArray-您可以在这里阅读不同的值:。特别是,只能在结构中显示为字段的数组上使用此非托管类型
[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;
}