 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Kno Cdt

Registrado: 30 Sep 2004Mensajes: 1
|
Publicado: Mar 02 Jun, 2009 10:49 am Asunto: Problema funcion callback |
|
|
Buenas,
Tengo un problemita utilizando una funcion de una libreria de visual c++.
Cuando intento hacer la llamada desde mi programa en borland me da un
error al pasar el parámetro de la funcion callback.
Esta es mi contexto:
#typedef en el .h de la libreria
typedef int (*NEORE_PROGRESS_CB) (double percent, void* pUserData);
#funcion callback
int notify_fn(double percent, void* data)
{
//Código
return 0;
}
#llamada a funcion de libreria con callback por parametro
neoRE_SetProgressCB((neoHENGINE)hEngine,notify_fn, NULL);
Este es el error de compilación:
[BCC32 Error] Unit1.cpp(69): E2034 Cannot convert 'int (* (_closure )(double,void *))(double,void *)' to 'int (*)(double,void *)'
[BCC32 Error] Unit1.cpp(69): E2342 Type mismatch in parameter 'pCb' (wanted 'int (*)(double,void *)', got 'void')
Algún crack que me pueda ayudar, por favor??? |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Mar 02 Jun, 2009 8:13 pm Asunto: |
|
|
El problema está en el tipo de la función callback. Sin poderlo probar lo que yo intentaría sería un cast del puntero a la función:
| Código: |
neoRE_SetProgressCB((neoHENGINE)hEngine, (NEORE_PROGRESS_CB)notify_fn, NULL); |
Saludos.
Ultima edición por escafandra el Mar 02 Jun, 2009 8:20 pm, editado 1 vez |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 03 Jun, 2009 3:39 am Asunto: |
|
|
o Bien, puedes hacerlo de la siguiente manera
| Código: | NEORE_PROGRESS_CB pToFunction; //declaramos una variable
pToFunction = ¬ify_fn; // asignamos la direccion de la funcion
|
y por ultimo, hacemos la llamada, de la manera que te indican.
| Código: | neoRE_SetProgressCB((neoHENGINE)hEngine, pToFunction , NULL); |
| Código: | typedef int (*NEORE_PROGRESS_CB) (double percent, void* pUserData); |
Cabe aclarar que el typedef que estas usando declara un puntero a una funcion que recibe 2 parametros , por lo tanto la funcion pToFuncion debe llevarlos. _________________
 |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|