Frage

Ich habe Probleme, eine Delphi -Funktion von C# zu rufen (versuchte, geschütztes Speicher zu lesen oder zu schreiben), und fragte sich, wie die richtige Art, die Methode aufzurufen, sein sollte. Die Delphi -Funktionssignatur ist wie folgt:

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

Was ist die richtige Art, diese Methode von C#zu bezeichnen?

War es hilfreich?

Lösung

Die Widestring ist mit COM BSTR kompatibel, und so sollte der .Net -Marshaller in der Lage sein, ihn ziemlich glücklich zu konsumieren:

[DllImport(@"test.dll")]
private static extern void methodToCall(
    [MarshalAs(UnmanagedType.BStr)]
    string aFirstParameter,
    [MarshalAs(UnmanagedType.BStr)]
    ref string aSecondParameter
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top