2

アンマネージ コード C++ DLL から C# アプリケーションに関数をインポートしようとしています。C++ プロトタイプは

int somefunction (int param1, int *param2 = NULL);

これを c# で宣言して、param2 のデフォルトの性質を利用するにはどうすればよいですか? 次のコードは機能しません。param2 はガベージで初期化されます。

DllImportAttribute("mydll.dll", EntryPoint = "somefunction")]
public static extern int somefunction(int param1);
4

2 に答える 2

1

C#4.0を使用している場合は、dtbの答​​えが正しいアプローチです。C#4.0では、オプションのパラメーターサポートが追加され、PInvoke関数でも同様に機能します。

C#4.0より前では、オプションのパラメーターを利用する方法はありません。最も近いのは、他の関数に転送する1つの関数を定義することです。

[DllImport("mydll.dll", EntryPoint = "somefunction")] 
static extern int somefunction(int param1, IntPtr param2);

static int somefunction(int param1) {
  someFunction(param1, IntPtr.Zero);
}
于 2010-09-29T15:47:11.553 に答える
0

試す

[DllImport("mydll.dll", EntryPoint = "somefunction")]
static unsafe extern int somefunction(int param1, int* param2 = null);

また

[DllImport("mydll.dll", EntryPoint = "somefunction")]
static extern int somefunction(int param1, IntPtr param2 = default(IntPtr));
于 2010-09-29T15:30:05.637 に答える