Hier ist meine C # Server-Methode:
%Vor%Mein C ++ - Client richtet diese Methode ein und ruft sie auf. Das funktioniert gut, aber die Status- und Ausgabevariablen scheinen nicht verkettet zu sein. Es ist, als würden sie nach Wert anstatt nach Referenz weitergegeben.
Hier ist mein Kundencode:
%Vor%Kann jemand Hilfe beim Einrichten der SAFEARRAY-Argumente geben, damit die Ref-Parameter zurückkopiert werden?
Ich weiß vielleicht nicht die vollständige Antwort, aber ich sehe zwei Dinge in Ihrem Code:
String wird nicht korrekt als Referenz übergeben
Zeichenfolgen in C # sind unveränderliche Referenzobjekte. Dies bedeutet, dass Verweise auf sie (nach Wert) weitergegeben werden, und sobald eine Zeichenfolge erstellt wird, können Sie sie nicht ändern. Wenn Sie den Zeichenfolgenwert ändern, erstellen Sie eine neue Zeichenfolge und ändern den lokalen Verweis darauf.
Es gibt eine großartige Erklärung darüber hier
Sie müssen also die Definition Ihrer C # -Funktion in etwa so ändern:
%Vor%Sie sollten ref statt out verwenden
Sie scheinen Argumentwerte zu initialisieren, bevor der C # -Funktionsaufruf nicht selbst in Funktion geht.
Sie sollten also ref statt out keyword verwenden;
%Vor%Tags und Links .net safearray parameters marshalling