Hola,
Tengo una libreria en C que va a ser usada desde una plicación C#.
Esta librería en C tiene un método con parámetros pasados por
referéncia. Es decir, que la función actualizará los valores de esos
parámetros y esos cambios seran recogidos desde la aplicació en C#.
La librería C, (libreria.dll):
DllExport void pruebaChar(char **p_datos) {
strcpy(*p_datos, "hola");
}
Desde C# este método se usa así:
[DllImport(baseDir + "libreria.dll")]
unsafe private static extern void pruebaChar(char **p_datos);
public static string pruebaReferChar() {
unsafe {
char* pal = stackalloc char[10];
pruebaChar(&pal);
return new string(pal, 0, 10);
}
}
El caso es que, al llamar a pruebaChar(&pal) ocurre una excepción de
corrupción de memória, o bien devuelve datos inesperados.
Por favor, alguien podria orientarme sobre que hago mal?
Saludos,
Jose Luis
Leer las respuestas