DLLImport c ++ función con parámetros por defecto
-
26-09-2019 - |
Pregunta
Estoy tratando de importar una función de un código C ++ DLL no administrado en mi C # aplicación. El C ++ prototipo es
int somefunction (int param1, int *param2 = NULL);
¿Cómo declaro esto en C # para tomar ventaja de la naturaleza del defecto param2? El código siguiente no funciona. param2 se inicializa con la basura.
DllImportAttribute("mydll.dll", EntryPoint = "somefunction")]
public static extern int somefunction(int param1);
Solución
Si está usando C # 4.0 a continuación respuesta dtb`s es el enfoque correcto. C # 4.0 añadió soporte parámetro opcional y funcionan igual de bien con funciones PInvoke.
Antes de C # 4.0 no hay manera de aprovechar el parámetro opcional. El equivalente más cercano es definir una función que remite a la otra.
[DllImport("mydll.dll", EntryPoint = "somefunction")]
static extern int somefunction(int param1, IntPtr param2);
static int somefunction(int param1) {
someFunction(param1, IntPtr.Zero);
}
Otros consejos
Trate
[DllImport("mydll.dll", EntryPoint = "somefunction")]
static unsafe extern int somefunction(int param1, int* param2 = null);
o
[DllImport("mydll.dll", EntryPoint = "somefunction")]
static extern int somefunction(int param1, IntPtr param2 = default(IntPtr));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow