C/Visual C - Funciones objeto

 
Vista:

Funciones objeto

Publicado por Perico (5 intervenciones) el 30/05/2007 19:02:49
Hola a todos:

Mi problema es el siguiente: tengo en una DLL una función

void initBT(void (*dataIndication) (void* buff, int size), void (*n_con_ind) (), void ( *n_discon_ind) ())
{
handlerDataInd = dataIndication;
conBtInd = n_con_ind;
disconBtInd = n_discon_ind;
}

donde los valores de la izquierda son:

extern void (*handlerDataInd) (void* buff, int size);
extern void (*conBtInd) ();
extern void (*disconBtInd) ();

Es decir, a cada puntero a función en initBT se le asigna el que le viene como parámetro.

Esta función la usa un programa que linka esta DLL. Mediante la siguiente función le quiero pasar las funciones como parametros a initBT para que asi la DLL sepa donde están esas funciones que pertenecen al main y no a la DLL.

initBT (dataIndication, n_con_ind, n_discon_ind);

Pero me da el siguiente error:

error C2664: 'initBT' : cannot convert parameter 1 from 'void (void *,int)' to 'void (__cdecl *) (void *,int)'

Esta claro que no puedo inicializar asi la función initBT.

Creo que la solucion tiene algo que ver con funciones objeto pero no entiendo lo que son ni como deberia utilizarlas.

Alguien me puede ayudar???

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Funciones objeto

Publicado por Tom (619 intervenciones) el 31/05/2007 16:44:03
Estás pasando una variable dónde se espera un puntero, lo dice el mensaje de error.
Dependiendo del compilador que uses (y del que se haya usado para generar la dll) puedes empezar a jugar con los parámetros de initBT.

Yo probaría, para empezar con:

initBT(&dataIndication, n_con_ind, n_discon_ind);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar