デフォルトパラメータでDLLIMPORT C ++関数
-
26-09-2019 - |
質問
私はC#アプリケーションにアンマネージコードのC ++ DLLから関数をインポートしようとしています。 C ++のプロトタイプです。
int somefunction (int param1, int *param2 = NULL);
どのように私はPARAM2のデフォルトの自然を活用するためにC#で、この宣言のですか?次のコードは動作しません。 PARAM2はゴミで初期化されます。
DllImportAttribute("mydll.dll", EntryPoint = "somefunction")]
public static extern int somefunction(int param1);
解決
あなたがC#4.0を使用している場合は、
は、その後dtb`s答えは正しいアプローチです。 C#4.0は、オプションのパラメータのサポートを追加し、彼らはのPInvoke機能と同じようにうまく動作します。
以前C#4.0にオプションのパラメータを利用する方法はありません。最も近い同等のは、その前方に他に一つの関数を定義することです。
[DllImport("mydll.dll", EntryPoint = "somefunction")]
static extern int somefunction(int param1, IntPtr param2);
static int somefunction(int param1) {
someFunction(param1, IntPtr.Zero);
}
他のヒント
試してみてください
[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));
所属していません StackOverflow