How to marshal a variable sized array of structs? C# and C++ interop help
I have the following C++ structs struct InnerStruct { int A; int B; }; struct OuterStruct { int numberStructs; InnerStruct* innerStructs; }; And a C++ function OuterStruct getStructs(); How can I marshal this to C#? Where the C# definitions is struct OuterStruct { InnerStruct[] innerStructs; }; You'll have to do this manually, since there's no way to tell the P/Invoke layer how much data to marshal from your C++ return value. struct OuterStruct { int numberStructs; IntPtr innerStructs; }; OuterStruct s = getStructs(); // using DllImport var structSize = Marshal.SizeOf(typeof(InnerStruct)); var