7

次のような C# extern 宣言があります。

    [DllImport("something.dll")]
    public static extern ReturnCode GetParent(IntPtr inRef, out IntPtr outParentRef);

それをF#に変換する方法は?

4

3 に答える 3

13

以下のコードのようなものを試すことができます。何がわからないReturnCodeので、以下のコードはそれが整数であることを期待しています。[<Struct>]より複雑なタイプについては、A-Dubb で参照されている回答のように属性を使用する必要があります。

type ReturnCode = int

[<System.Runtime.InteropServices.DllImport("something.dll")>]
extern ReturnCode GetParent(System.IntPtr inRef, System.IntPtr& outParentRef);

関数を呼び出すには、次のように記述します。

let mutable v = nativeint 10
let n = GetParent(nativeint 0, &v)

ところで: の関数を実装するサンプル C コードも投稿していただけますsomething.dllか? はいの場合は、回答を送信する前にソリューションを実行してみてください...

于 2011-07-02T18:55:54.080 に答える
1

たぶん、この同様の質問があなたを正しい方向に向けるでしょう. MarshalAs を使用した P/Invoke 署名の "in" および "out" F# 構文のパラメーター レベルで属性を使用したようです。

于 2011-07-02T18:42:47.727 に答える