FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Implementacion de Callback
Hola gente, tengo un problema al implementar una callback.
Les cuento lo que tengo para ver si alguien me puede decir si le escape a algo: 1) Tengo hecho en Visual C++ una DLL , tengo ahi una funcion a la cual por parametro le paso una callback, esa DLL me deberia retornar un numero '1234' pero me retorna cualquier numero 1231231. 2) la definicion es:
Ese seria el ejemplo, aparte tambien estube leyendo que hay gente que cuando usa callback les tira error de memoria, yo tambien tengo esos problemas, es decir la callback se ejecuta bien, pero cuando llega al final (end da error de memoria . La verdad que no encontre mucha info al respecto. Tengo el mismo problema que este link http://www.clubdelphi.com/foros/show...light=callback Alguien tiene alguna idea? desde ya le agradeceria. Última edición por walito fecha: 26-09-2006 a las 19:00:39. |
#2
|
||||
|
||||
Prueba a utilizar la directiva cdecl o stdcall a la hora de declarar la función. La directiva cdecl puede ser especialmente interesante en este caso, date cuenta que si se llama a la función con el método cdecl (el que se usa normalmente en C y C++) y la función esta declarada con la directiva register (la que se usa por defecto si no se indica otra cosa), tanto la propia función como el proceso que la llama intentan eliminar los parámetros de la pila provocando de esa manera un error.
Busca en la ayuda cdecl para mas información sobre las "Calling conventions" (No se como traducirlo) |
#3
|
||||
|
||||
gracias por tu pronta respuesta.
Probe con anterioridad lo que tu me indicas pero sigue sin andar bien! No me estara faltando algo mas? |
#4
|
||||
|
||||
Si vas a tener la rutina dentro de un dll, no entiendo por que usas la directiva "of object" al declarar el tipo procedural.
Si es que tenes alguna razón, ¿podrias explicarmela?, si no, quizas por allí vaya tu problema. Cómo ya te ha dicho seoane, hay que ver con que estándar de llamada está compilada la función en el dll y usar el mismo al declarar el tipo procedural. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#5
|
||||
|
||||
Muy bien no se para que sirbe "of object", pero es de la unica foma que corre, si le saco y le pongo cdecl me dice despues que los tipos no son los correctos o que le faltan parametros cuando paso la callback al procedimiento de la dll.
Si tenes algun ejemplo mas o menos, te agradeceria, asi entiendo como es la cosa. Igual en ves de usar cdecl pongo stdcall en la llamada a la dll igual no funciona y me tira mas errores todavia. desde yamuchas gracias |
#6
|
||||
|
||||
Sobre el estándar de llamada, creo que no es un asunto de "adivinar" cual es. Si vos hiciste la DLL, podes indicar el estándar de llamada a usar de ambos lados, y si no, pues buscar la documentación de dicha DLL para saber cual usar.
Te remito a la ayuda de delphi en el tópico Calling conventions, de donde cito uno de los primeros parrafos para que veas su importancia: Cita:
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#7
|
||||
|
||||
Desde ya muchas gracias, ahora leere lo que tu me dices.
Cualqueir cosa que funcione lo respondo aca. GRacias |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
IMplementacion de un parser | bustio | Varios | 10 | 07-12-2007 18:50:10 |
WaveInOpen y Callback | walito | API de Windows | 6 | 08-07-2006 01:06:58 |
Marshall y CallBack´s | Edgar Perez | Providers | 0 | 03-05-2006 17:39:55 |
Implementacion POO y UML | Leonardo | OOP | 1 | 19-10-2005 16:51:13 |
Análisis, Desarrollo e Implementación de un Sistema | delphi.com.ar | Humor | 2 | 12-09-2003 22:24:53 |
|