Вопрос

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

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

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

Это было полезно?

Решение

Видестра совместимо с Com BSTR, и поэтому маршаллер .NET должен быть в состоянии потреблять его довольно счастливо:

[DllImport(@"test.dll")]
private static extern void methodToCall(
    [MarshalAs(UnmanagedType.BStr)]
    string aFirstParameter,
    [MarshalAs(UnmanagedType.BStr)]
    ref string aSecondParameter
);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top