[ Foro de C# ]

Crear estructuras

27-May-2014 16:23
Invitado (bk)
3 Respuestas

Hola a todos, tengo un gran problema, a ver si me pueden ayudar, necesito ejecutar métodos de una dll hecha en C en un proyecto de c#, pero no logro poder definir las estructuras correctas, por ejemplo existe una estructura en la dll realizada en C que es la siguiente:


typedef struct {
        const char *type;
        char **data;
} struct_1


el asunto es que no se como declarar esa estructura en c# y por el estilo hay mas estructuras declaradas, pero quisiera poder comenzar al menos por esta que menciono, so entiendo como se manejaría el tema de punteros en c#

Gracias por sus atenciones


27-May-2014 21:43
Nacho Cabanes (+84)

Es algo que nunca he necesitado hacer, así que no puedo darte "soluciones definitivas". En principio, un "char*" corresponde a un "string", y un "char**" será un "string[]" en C#, pero me temo que las conversiones no serán automáticas...


27-May-2014 21:55
Invitado (bk)

la situación se torna complicada porque es que tengo que usar esa estructura y siempre al acceder a métodos de la dll (la cual especifico que no la puedo importar a c#, porque está hecha en C o C++), me salta constantemente el error de que intento leer o escribir en la memoria protegida, lo que  he podido encontrar en la web es que es error en la firma de las estructuras y métodos.  Gracias por responder


28-May-2014 00:02
Nacho Cabanes (+84)

Es un tema avanzado, no algo de principiantes. En el peor de los casos, quizá puedas tomar esos campos como "IntPtr", lo que dificultará su manejo pero es posible que al menos te permita acceder al dato.

Si entiendes el inglés, quizá este apartado de MSDN te dé las pautas básicas:

http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx

aunque ese tipo de tutoriales generalmente se refieren a C++, y al acceso a funciones/métodos, no directamente a datos (como tu estructura).

Para conversaciones más aplicadas a casos concretos, puedes mirar estos hilos de StackOverflow, que es un buen sitio para temas de programación avanzados (en inglés), quizá te ayuden:

http://stackoverflow.com/questions/6392372/access-a-method-from-a-dll-from-c-sharp-program

http://stackoverflow.com/questions/315051/using-a-class-defined-in-a-c-dll-in-c-sharp-code

¡Suerte!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)