CSharp - 具有默认参数的DLLImport C++ 函数

  显示原文与译文双语对照的内容
0 0

我正在尝试将非托管代码 C++ dll中的函数导入到 C# 应用程序中。 C++ Prototype是


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

如何在 C# 中声明这里方法以利用param2的默认特性? 以下代码不起作用。 param2用垃圾初始化。


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

时间: 原作者:

0 0

如果你使用 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);
}

原作者:
0 0

try


[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));

原作者:
...