Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Carga dinamica de una dll y Access violation (https://www.clubdelphi.com/foros/showthread.php?t=27042)

zurech 10-11-2005 10:30:29

Carga dinamica de una dll y Access violation
 
Hola a todo@s, tengo un problemilla con la carga dinamica de una libreria dll, que no he conseguido encontrar la solucion, haber que os parece.

Nota: La libreria lo que hace es mostrar un formulario, y si no la cargo dinamicamente (LoadLibrary), no da ningun error y funciona correctamente.

Codigo de la dll
Código Delphi [-]
procedure MostrarFormulario();
  begin
    principal := Tprincipal.Create(nil);
    try
      principal.ShowModal;
    finally
      principal.Free;
    end;
  end;
  
  exports
    MostrarFormulario; // Exportamos las funciones.

codigo de la llamada a la dll
Código Delphi [-]
procedure TfrmPrueba.cargaDeLibrerias();
  var
    handleDll : THandle;
    mostrarFormulario : procedure(); Stdcall;
  begin
    handleDll := LoadLibrary('dllEnvasadora.dll');
  
    if (handleDll > 32) then
      begin
         mostrarFormulario := GetProcAddress(handleDll, 'mostrarFormulario');
         mostrarFormulario;
         FreeLibrary(handleDll);
      end;
  end;

Haber que os parece, y si sabeis donde esta el error, porque el mensaje que me sale es:

Código:

Access violation at address 00000000. Read of address 00000000
PD: Gracias de antemano

zurech 10-11-2005 11:04:50

Yo es que me pego un tiro un dia destos como siga siendo tan torpe.

Ya esta solucionado el problema, funciona todo perfecto, lo unico que tenia mal es la linea
Código Delphi [-]
mostrarFormulario := GetProcAddress(handleDll, 'mostrarFormulario');

Que la he sustituido por
Código Delphi [-]
mostrarFormulario := GetProcAddress(handleDll, 'MostrarFormulario');

Casi una hora rallandome tan solo por una letra mayuscula!!!!

Bueno gracias de todas formas y espero que le sirva a alguien y no tenga una fallo tan tonto como este

lucho6007 19-02-2011 23:49:10

Liberar los punteros a las funciones
 
Cómo se liberan los punteros a funciones?
O los libera Delphi cuando se destruye el form?

Ñuño Martínez 21-02-2011 12:33:14

Bienvenido lucho6007.

Cita:

Empezado por lucho6007 (Mensaje 391449)
Cómo se liberan los punteros a funciones?
O los libera Delphi cuando se destruye el form?

Sí o no, depende de quién y cómo se asigne dicho puntero.

De todas formas, deberías echarle un vistazo a nuestra guía de estilo y abrir un nuevo hilo, ya que el tema de punteros es diferente.


La franja horaria es GMT +2. Ahora son las 14:54:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi