![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema con DLL
Estoy intentando crear una DLL y me da un error que no siempre me pasa.
El caso es que yo he creado mi DLL con una serie de funciones declaradas con la estructura: { function nombre_funcion(parametros):tipo_resultado; stdcall; implementation function nombre_funcion(parametros):tipo_resultado; stdcall; begin ... operaciones ... result := resultado; end; } mas o menos. En el programa creo un tipo (type) que hacen referencia a las funciones de la DLL: type Tnombre_funcion = function(parametros):tipo_resultado; stdcall; private nombre_funcion = Tnombre_funcion; public end; var HandleDLL : THandle; Bien pues ahora al ejecutar el programa vinculo mi variable "nombre_funcion" a la funcion de la DLL: HandleDLL:=LoadLibrary(PChar('ruta'+'\DllKeyGenerator.dll')); { Punteros a la direccion de la DLL } @nombre_funcion:=GetProcAddres(HandleDLL, 'nombre_funcion'); Pues ahora solo falta hacer la llamada a la DLL. Una de las funciones me devuelve un String y en realidad me devuelve el resultado correcto pero junto con un error : "INVALID POINTER OPERATION" Alguien sabe porque puede sucederme??? Tengo que añadir que a veces no da el error y que si intento llamar muchas veces seguidas a la funcion, me da un error que me cierra la aplicacion. Espero que no sea una charla muy larga... |
|
|
![]() |
|