D
Mein Ziel besteht ja gerade darin, eine Wrapper-Klasse in C++/CLI zu schreiben, um die native C++ Bibliothek an das .NET Framework (primär C#) anzubinden.
Das bedeutet, ich bekomme also aus der C#-Welt ein managed Array vom Typ** system::array<double,2> übergeben und muss das ganz irgendwie in einen nativen C/C++ Pointer vom Typ double** **umwandeln.
Und zwar nach Möglichkeit ohne vor dem Aufruf der nativen Methode erstmal alle Daten aus dem managed Array in einen separaten Puffer kopieren zu müssen - und hinterher wieder zurück.
/rant/ schrieb:
Nun, viel mehr unsafe als C++/CLI und cli::pin_ptr geht ja wohl nicht mehr
Soweit ich das überblicke, existiert das "unsafe" Schlüsselwort nur auf der C#-Seite, jedoch nicht unter C++/CLI.
Demnach müsste ich also meine C++/CLI Wrapper-Klasse auf der C#-Seite immer aus einem "unsafe" Context heraus aufrufen, damit sichergestellt ist, dass die Arrays mit definiertem "Layout" übergeben werden?
Eigentlich möchte ich ja nicht voraussetzen, dass meine Wrapper-Klasse nur aus einem "unsafe" Context heraus aufrufen werden darf...
/rant/ schrieb:
Ausserdem: Wenns dir wirklich so wichtig ist, dann nimm halt ein unmanaged Array?
Ich denke nicht, dass das möglich ist, da die Daten ja ursprünglich aus der C#-Welt kommen und daher als managed Array nach C++/CLI übergeben werden...