Marshalling eines out-parameters
-
Guten Mittag,
ich habe ein Array auf der C#-Seite. Eine C++-Funktion soll dieses Array füllen. Wie viele Elemente es insgesamt sind, ergibt sich auch erst in der C++-Funktion. Kann ich so etwas überhaupt marshaln?
Beispielcode:
using System; using System.Runtime.InteropServices; namespace Test { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct bar { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)] public string Name; }; public class foo { void csharp_fkt() { bar[] arr; cpp_fkt(out arr); // Die C++ Fuktion soll das Array dynamisch füllen. } [DllImport("LIB_NAME")] public static extern void cpp_fkt(out bar[] arr); // Wie müsste ich hier den out-parameter marshaln? } }
Danke euch
Mfg out
-
[System.Runtime.InteropServices.Out] bar[] args
Wenn es ein Pointer ist müssstest du aber auch noch http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshalasattribute verwenden. Dort dann Array angeben.