Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2005
zurech zurech is offline
Miembro
 
Registrado: jul 2005
Posts: 61
Poder: 19
zurech Va por buen camino
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
__________________
noticiasfrikis, mi web de chorradas
Responder Con Cita
  #2  
Antiguo 10-11-2005
zurech zurech is offline
Miembro
 
Registrado: jul 2005
Posts: 61
Poder: 19
zurech Va por buen camino
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
__________________
noticiasfrikis, mi web de chorradas
Responder Con Cita
  #3  
Antiguo 20-02-2011
lucho6007 lucho6007 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Junín, pcia de BsAs, Argentina
Posts: 73
Poder: 16
lucho6007 Va por buen camino
Liberar los punteros a las funciones

Cómo se liberan los punteros a funciones?
O los libera Delphi cuando se destruye el form?
Responder Con Cita
  #4  
Antiguo 21-02-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Bienvenido lucho6007.

Cita:
Empezado por lucho6007 Ver Mensaje
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.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:01:53.


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
Copyright 1996-2007 Club Delphi