Hallo!
Zunächst, von C# habe ich absolut keine Ahnung. Also entschuldigt bitte, wen ich Mist schreibe.
Ich habe den Wrapper einer C/C++
DLL für C#. Die
DLL kennt nur
ASCII-Strings. Beides nicht von mir und ich habe somit keinen Einfluss darauf. Für die Übergabe von Strings wird
Delphi-Quellcode:
var str = "Stringeling";
fixed (byte* byteChars = Encoding.ASCII.GetBytes(str))
verwendet. Zumindest die Richtung ist klar und funktioniert. Wenn ich aber aus der
DLL Strings als Rückgabe erhalten möchte, muss ich den entsprechenden Speicherplatz reservieren (50 Leerzeichen sind irgendwie uncool) aber vor allem aus dem byte* irgendwie den String herausholen. In Delphi würde ich wohl einfach die Bytes durchlaufen, bis ich auf #0 treffe. Bei C# finde ich aber keine Möglichkeit und byte* ist auch nicht der ideale Begriff für Suchmaschinen.
Mit einem selbst geschriebenen Header benutze ich die Funktionen schon länger in Delphi-Programmen, Zeiger auf AnsiString, PAnsiChar und und und. Alles möglich. Nur das merkwürdige C# macht da mit.
Ich hoffe, jemand hat mehr Ahnung als ich und kann mir helfen.