Übergeben Sie ein mehrdimensionales Array von verwaltetem Code an nicht verwalteten Code

8

Ich möchte Folgendes tun:

  1. Erstellen Sie drei dimesinal Array in c # -Code wie folgt:

    %Vor%
  2. Ü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 !!!

    
Sergey Kucher 22.08.2011, 20:57
quelle

2 Antworten

7
%Vor%

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

    
Djole 25.08.2011, 07:50
quelle
2

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 #

%Vor%     
xanatos 25.08.2011 07:41
quelle

Tags und Links