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...
|