Ich versuchte verschiedene Dinge, aber ich bin verrückt mit Interop.Pass C# String zu C++ und übergeben C++ Ergebnis (String, Char * .. was auch immer) zu C#
(hier ist das Wort String nicht auf einen Variablentyp sondern "eine Sammlung von char"): Ich habe eine nicht verwaltete C++ - Funktion, in einer DLL definiert, die ich versuche, von C#, diese Funktion zuzugreifen hat einen String-Parameter und einen String-Rückgabewert wie folgt:
Was sollte String in C++ Seite sein? und C# eins? und welche Parameter brauchen DllImport dafür?
Dies ist der richtige Ansatz. Beachten Sie, dass Sie die Puffergröße nicht als Referenz übergeben müssen. Das C/C++ sollte die Zeichenfolge beenden, buffer.ToString() erzeugt den Rückgabewert. –
Vielen Dank für die Antworten. Ich habe irgendwo gelesen, dass StringBuilder für die Ausgabe-String verwendet wird, aber ich muss auch an eine C++ - Funktion übergeben eine Eingabe-String .. welcher Typ sollte ich verwenden? In der C++ - Seite habe ich char * und C# -Seite Zeichenfolge, aber es funktioniert nicht. Schließlich kann ich die Ausgabe "String" (C++ Seite) als const char * definieren? Oder muss ich einen char * haben? – Smjert
@Smjert: Die Verwendung eines const char * ist ein guter Weg zu gehen, wenn Sie es nicht ändern. Dies sollte gut auf eine Zeichenfolge auf der C# -Seite abgebildet werden. Welche Art von Problemen siehst du? –