3

C#からdelphi関数を呼び出すのに問題があり(保護されたメモリの読み取りまたは書き込みを試みました)、メソッドを呼び出す正しい方法を考えていました。Delphi関数のシグネチャは次のとおりです。

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

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

4

1 に答える 1

8

WideStringはCOMBSTRと互換性があるため、.netマーシャラーはそれを非常に楽しく利用できるはずです。

[DllImport(@"test.dll")]
private static extern void methodToCall(
    [MarshalAs(UnmanagedType.BStr)]
    string aFirstParameter,
    [MarshalAs(UnmanagedType.BStr)]
    ref string aSecondParameter
);
于 2011-03-15T10:23:36.453 に答える