FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Access Violation con DLL
Hola a todos...
Tengo una situación bastante extraña que no logro explicarme porque pasa, así que les cuento a ver si ven que puede ser... Estoy utilizando una DLL compilada en "C", que su unica funcion (sumatoria) tiene 2 parametros de entrada y su salida es la suma de ambos... En delphi creo la funcion:
Lo extraño es que cuando llamo a la funcion de ésta manera: el resultado es correcto, o sea, me devuelve la suma de los valores que hay en los edits... Pero aqui viene lo extraño: si en vez de hacer el strtoint de los edits para pasarle los parametros a la funcion, directamente pondo dos numeros enteros, o sea: salta un error de acces violation !!! es realmente muy raro... También probé: y da el mismo error... es muy raro... Alguien sabe que puede ser??? muchas gacias, salu2
__________________
Marcelo C. |
#2
|
||||
|
||||
Estaría bien que pusieras el código en C, seguramente ahí esta el problema.
|
#3
|
||||
|
||||
Es probable que no estés importando la función correctamente. Quizá el tipo de llamada de la función original no es StdCall. Lo que dice Domingo es importante, ¿podrías mostrarnos la cabecera de esa función de C.
Un abrazo importado. Al González. |
#4
|
|||
|
|||
gracias por las prontas respuestas
la funcion de C es bien sencilla, simplemente suma las dos entradas, algo así: int sumatoria (int A, int B) { int C; C=A+B; result(C); }
__________________
Marcelo C. |
#5
|
||||
|
||||
Prueba con algo asi:
Código:
int stdcall sumatoria (int A, int B) |
#6
|
||||
|
||||
A mi me parece que la declaración en Delphi debería ser algo como ésto:
pues muy probablemente esté pasando como puntero los valores... Claro que solo "supongo" |
#7
|
|||
|
|||
gracias !!! funcionó finalmente...
el poner var en los parametros de la funcion no funcionó porque se quejaba que no se pueden pasar variables, dice que tienen que ser constantes... la solución fue poner stdcall en la funcion de C, ojo, va con doble subgueon antes... y para poder pasar reales, ojo que con el formato de C float se compatibiliza con el single de delphi... dejo aquí la solucion final:
y la funcion de C es:
MUCHAS GRACIAS A TODOSSSSSS !!!!!! D
__________________
Marcelo C. |
#8
|
||||
|
||||
¡Hola a todos!
¿Así que eran flotantes y no enteros? Haber empezado por ahí compadre. Un abrazo sin omisiones. Al González. |
#9
|
|||
|
|||
no, no... inicialmente eran enteros... hice todas las pruebas con enteros y funcionó, y luego pasé a enteros y tambien funcionó teniendo en cuenta eso de los singles... lo aclaré luego para que si alguno necesitaba pasar reales ya tuviera esa solucion
salu2
__________________
Marcelo C. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
access violation | chona | Varios | 2 | 31-10-2006 01:36:04 |
Access Violation | Carliviris | Varios | 5 | 12-05-2006 19:21:45 |
Access violation at .... | Perio | Varios | 5 | 07-02-2006 15:50:36 |
Access Violation ..... | MADV01 | Varios | 2 | 24-03-2004 16:01:33 |
Access violation | Giasl | Varios | 6 | 07-05-2003 12:35:51 |
|