Ich kann anscheinend nicht herausfinden, wie man ein Array von einer exportierten C ++ DLL zu meinem C # -Programm zurückgibt. Das einzige, was ich beim googlen gefunden habe, war Marshal.Copy (), um das Array in einen Puffer zu kopieren, aber das gibt mir nicht die Werte, die ich zurückgeben will, ich weiß nicht, was es mir gibt / p>
Folgendes habe ich versucht:
Exportierte Funktion:
%Vor%C # -Teil:
%Vor%Ich weiß, dass der Rückgabetyp int [] wegen der verwalteten / nicht verwalteten Unterschiede wahrscheinlich falsch ist, ich habe einfach keine Ahnung, wohin ich von hier aus gehen soll. Ich kann anscheinend keine Antwort für irgendetwas finden, aber Zeichenarrays zu Strings zurückgeben, keine Integer-Arrays.
Ich habe den Grund dafür gefunden, dass die Werte, die ich mit Marshal.Copy bekomme, nicht die sind, die ich zurückgebe, weil das Array 'arr' in der exportierten Funktion gelöscht wird, aber ich bin mir nicht 100% sicher klar, das wäre toll.
Ich habe die von Sriram vorgeschlagene Lösung implementiert. Falls jemand es hier haben will, ist es das.
In C ++ erstellen Sie eine DLL mit diesem Code:
%Vor% Die DLL wird InteropTestApp
heißen.
Dann erstellen Sie eine Konsolenanwendung in C #.
%Vor% result
enthält jetzt die Werte 1,2,3,4,5
.
Ich hoffe, das hilft.