C# 如何使用pinvoke在另一个传递给C DLL的文件中马歇尔结构

C# 如何使用pinvoke在另一个传递给C DLL的文件中马歇尔结构,c#,c,dll,struct,pinvoke,C#,C,Dll,Struct,Pinvoke,我试图弄清楚如何将一个简单的结构嵌入到另一个结构中,该结构从C#传递到C dll。如何对嵌入式结构进行马歇尔分析?精简到最基本的部分 //The C code typedef struct { int a; int b; } A; typedef struct { int c; A myStruct; } B; //The c# code: using System.Runtime.InteropServices; [StructL

我试图弄清楚如何将一个简单的结构嵌入到另一个结构中,该结构从C#传递到C dll。如何对嵌入式结构进行马歇尔分析?精简到最基本的部分

//The C code
typedef struct {
       int a;
       int b;
} A;
typedef struct {
      int c;
      A myStruct;
} B;

//The c# code:
using System.Runtime.InteropServices;

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public class A{
        int a;
        int b;
    }

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public class B{
          int c;
          public IntPtr A;
     }
仅当B定义为:

typedef struct {
      int c;
      A* myStruct;
} B;
仅当B定义为:

typedef struct {
      int c;
      A* myStruct;
} B;