次のような C# extern 宣言があります。
[DllImport("something.dll")]
public static extern ReturnCode GetParent(IntPtr inRef, out IntPtr outParentRef);
それをF#に変換する方法は?
次のような C# extern 宣言があります。
[DllImport("something.dll")]
public static extern ReturnCode GetParent(IntPtr inRef, out IntPtr outParentRef);
それをF#に変換する方法は?
以下のコードのようなものを試すことができます。何がわからない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
か? はいの場合は、回答を送信する前にソリューションを実行してみてください...
たぶん、この同様の質問があなたを正しい方向に向けるでしょう. MarshalAs を使用した P/Invoke 署名の "in" および "out" F# 構文のパラメーター レベルで属性を使用したようです。