Как вернуть строку с null-terminated символом в середине из delphi dll в c#?
delphi:
function Test(): PChar; stdcall;
var
LocalStr: String;
begin
LocalStr:= 'Test string with'+ #0 + 'null-terminated in body';
Result:= CoTaskMemAlloc(SizeOf(Char) * Length(LocalStr) + 1);
StrLCopy(Result, PChar(LocalStr), Length(LocalStr));
end;
c#:
[DllImport(@"путь к dll", CharSet = CharSet.Unicode)]
public static extern string Test();
Возвращается только "Test string with". Оно и понятно, так как тип возврата PChar. А вот как вернуть целиком такую строку, я не знаю.
Источник: Stack Overflow на русском