質問

C#からDelphi関数を呼び出すのに問題があります(保護されたメモリの読み取りまたは書き込みを試みました)、メソッドを呼び出す正しい方法はどうあるべきか疑問に思っていました。 Delphi関数の署名は次のとおりです。

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

C#からこのメソッドを呼び出す正しい方法は何ですか?

役に立ちましたか?

解決

WideStringはCOM BSTRと互換性があるため、.NET Marshallerはそれを非常に幸せに消費できるはずです。

[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