Как вызвать эту функцию Delphi из C #? - PullRequest
3 голосов
/ 15 марта 2011

У меня проблемы с вызовом функции delphi из C # (попытка чтения или записи в защищенную память), и мне было интересно, каким должен быть правильный способ вызова метода.Сигнатура функции Delphi выглядит следующим образом:

procedure methodToCall(
    aFirstParameter: Widestring; 
    var aSecondParameter: Widestring
    ); stdcall;

Как правильно вызывать этот метод из C #?

1 Ответ

7 голосов
/ 15 марта 2011

WideString совместим с COM BSTR, поэтому маршаллер .net должен иметь возможность вполне успешно его использовать:

[DllImport(@"test.dll")]
private static extern void methodToCall(
    [MarshalAs(UnmanagedType.BStr)]
    string aFirstParameter,
    [MarshalAs(UnmanagedType.BStr)]
    ref string aSecondParameter
);
...