簡體   English   中英

具有默認參數的DLLImport c ++函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM