Возврат строки из DLL C # с неуправляемым экспортом в сценарий установки Inno

У меня есть C # DLL, которая выставляет функцию с помощьюНеуправляемый экспорт который вызывается непосредственно скриптом Inno Setup Pascal. Эта функция должна вернуть строку в Inno Setup. Мой вопрос, как я могу это сделать?
Мой предпочтительный метод - передать буфер из Inno Setup в функцию C #, которая будет возвращать строку внутри этого буфера. Я пришел с этим кодом:

C # функция:

[DllExport("Test", CallingConvention = CallingConvention.StdCall)]
static int Test([Out, MarshalAs(UnmanagedType.LPWStr)] out string strout)
{
   strout = "teststr";
   return strout.Length;
}

Сценарий Inno Setup:

function Test(var res: String):Integer; external 'Test@files:testdll.dll stdcall';

procedure test1; 
var
    Res: String;
    l: Integer;
begin
    SetLength(Res,256);
    l := Test(Res);
    { Uncommenting the following line causes an exception }
    { SetLength(Res,l); }
    Log('"Res"');
end;

Когда я запускаю этот кодRes переменная пуста (я вижу "" в журнале)

Как я могу вернуть строку из этой DLL?

Обратите внимание, что я использую версию Inno Setup для Unicode. Я также не хочу использовать COM для вызова этой функции, а также для выделения буфера в DLL и возврата его в Inno Setup.

Ответы на вопрос(1)

Ваш ответ на вопрос