Ich möchte Folgendes tun:
Erstellen Sie drei dimesinal Array in c # -Code wie folgt:
%Vor%Übergeben Sie es wie folgt an nicht verwalteten Code (c ++):
%Vor%AKTUALISIERT Wenn ich den folgenden Code versuche, habe ich Laufzeitfehler:
Es wurde versucht, in den geschützten Speicher zu schreiben oder zu lesen.
Danke !!!
Dies wurde getestet und es funktioniert, die einzige Einschränkung ist, dass Sie Marshal.FreeHGlobal
auf den Array-Zeiger aufrufen müssen, wenn Sie damit fertig sind oder Sie ein Speicherleck bekommen, würde ich auch vorschlagen, dass Sie Ihre C ++ ändern Funktion, so dass es die Array-Dimensionen akzeptiert, oder Sie können nur 3D-Arrays bestimmter Größe verwenden
Ich schreibe es in reinem C #, aber wenn Sie die unsafe static
von Func
wegnehmen, sollte die Func
in C / C ++ funktionieren. Sei dir bewusst, dass ich mir sicher bin, dass es ok ist, das zu schreiben :-)
Ich verwende diese Indizierung in Arrays von beliebigen Rang in C #
Tags und Links c# c++ dllimport marshalling