Ver Mensaje Individual
  #11  
Antiguo 18-08-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
mlara:

Te pongo un ejemplo que he visto de cómo cargar en tiempo de ejecución la librería y sus funciones.

Código Delphi [-]
var
  // identificador de la librería
  lib_handle: HMODULE;

  // declaras el encabezado de cada función como variable
  mysql_connect: function(_mysql: PMYSQL; const host, user, passwd: pChar): PMYSQL; stdcall;

function loadlib: boolean;
  procedure assign_proc(var proc: FARPROC; name: pChar);
  begin
    proc := GetProcAddress(libmysql_handle, name);
    if proc = nil then libmysql_status := LIBMYSQL_INCOMPATIBLE;
  end;

begin
  lib_handle := LoadLibrary('libmysql.dll');

  if lib_handle = 0 then
    Result := false
  else
  begin
    assign_proc(@mysql_connect, 'mysql_connect');

    { otras asignaciones }

    Result := true;
  end;
end;

loadlib carga la librería y asigna a la variable mysql_connect (que es de tipo funcion) la dirección de la función en el dll. El procedmineto local assign_proc es para facilitar la asignación en caso de que haya muchas funciones. Si la librería no se encuentra, loadlib regresa false.

Si ya no necesitas la librería, puedes descargarla con

Código Delphi [-]
FreeLibrary(lib_handle);

// Saludos
Responder Con Cita