DLLImport c++的功能与缺省参数
-
26-09-2019 - |
题
我试图进功能从管理的代码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然后易切的答案是正确的做法。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