[英]DLLImport c++ function with default parameters
我正在嘗試將來自非托管代碼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);
如果您使用的是C#4.0,那么dtb的答案是正確的方法。 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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.