Callback de C en C++
Hola, estoy intentando utilizar una funcion definida en un modulo en C que necesita como parametro un puntero a una funcion definida en una clase en C++. Al compilar aparece un error de conversión de tipos. Alguna idea?
gracias por adelantado.
gracias por adelantado.
Para llamar una función miembro de un módulo C++ desde un módulo C, se necesita una función intermediaria (wrapper)
Por ejemplo:
// en el código C++:
class UnaClase {
// ...
int f(int); // función miembro
};
extern "C" int Llama_a_f(UnaClase* p, int i) // función wrapper.
{
return p->f(i); // devuelve lo que devuelve f()
}
// notarás que es necesario declararla como extern "C".
Después, para llamara a esta función desde el módulo C:
/* código C: */
int Llama_a_f(struct C* p, int i); /* declaración de la func. wrapper*/
void unaFuncion(struct C* p, int i)
{
int d = Llama_a_f(p,i); /* llamada a la func. wrapper */
/* ... */
}
Suerte,
Alejandro
Por ejemplo:
// en el código C++:
class UnaClase {
// ...
int f(int); // función miembro
};
extern "C" int Llama_a_f(UnaClase* p, int i) // función wrapper.
{
return p->f(i); // devuelve lo que devuelve f()
}
// notarás que es necesario declararla como extern "C".
Después, para llamara a esta función desde el módulo C:
/* código C: */
int Llama_a_f(struct C* p, int i); /* declaración de la func. wrapper*/
void unaFuncion(struct C* p, int i)
{
int d = Llama_a_f(p,i); /* llamada a la func. wrapper */
/* ... */
}
Suerte,
Alejandro
