如何编组嵌套结构?

时间:2011-08-08 03:58:32

标签: c# c++

从C#调用DLL方法时,我需要将三个C ++结构作为参数发送。 我将它们简化为以下内容:

typedef struct
{
    int data1;
    int data2;
} A;

typedef struct
{
    int numStructA;
    A *pStructA;
    int moreData;
} B;

typedef struct
{
    TCHAR *pStr;
    B structB;
} C;

以下是我需要从C#调用的C ++函数:

int func(C *pStructC, int numStructC);

在我的C#代码中,我将结构定义如下:

[StructLayout(LayoutKind.Sequential, Pack = 1)]
private struct A
{
    public int data1;
    public int data2;
}

[StructLayout(LayoutKind.Sequential, Pack = 1)]
private struct B
{
    public int numStuctA;
    public IntPtr structA;
    public int moreData;
}

[StructLayout(LayoutKind.Sequential, Pack = 1)]
private struct C
{
    [MarshalAs(UnmanagedType.LPTStr)]
    public string Str;
    [MarshalAs(UnmanagedType.Struct)]
    public B structB;
}

[DllImport("somedll.dll")]
private static extern int func(IntPtr pStructC, int size);

我试图封装嵌套结构。但是,C ++函数无法正确接收数据。到目前为止,只有嵌套结构之前的数据才能正确发送到C ++函数。 如何编组嵌套结构以便C ++方法接收正确的数据?提前谢谢。

0 个答案:

没有答案