Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Llamar a una DLL ubicada en otro directorio (https://www.clubdelphi.com/foros/showthread.php?t=33231)

Javi2 30-06-2006 10:30:16

Llamar a una DLL ubicada en otro directorio
 
Hola,

Acabo de crear por primera vez una DLL con un formulario. El caso es que quiero probarla llamándola desde otro proyecto de prueba ubicado en una carpeta distinta a donde esta la DLL, pero no me hace ni caso. Me muestra un mensaje diciendo que no encuentra la DLL. Si la copio en la misma carpeta donde está este proyecto de prueba sí funciona bien.
El problema es que cuando utilice realmente esta DLL, quiero ubicarla en una carpeta determinada que no tiene porqué coincidir con el ejecutable que la llama.

¿Cómo puedo llamar a una DLL ubicada en una carpeta distinta al ajecutable que la llama?

Muchas gracias por el interés.

seoane 30-06-2006 11:05:09

¿Que codigo utilizas para llamarla? Hay mas de una forma de usar una DLL dependiendo de como la uses puedes indicarle una ruta absoluta, relativa o incluso buscarla tu mismo. Y en ultimo caso siempre puedes colocarla en la carpeta de windows.

Pon aqui el codigo que usas y le echamos un vistazo.

Javi2 30-06-2006 12:37:53

Gracias a todos por vuestro interés. Aquí adjunto el código donde se llama a la DLL. Lo que hago es añadir la definición de la función pero con la coletilla "external" y el nombre de la DLL.


Código Delphi [-]
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
 
function BUSCAARTICULO_MostrarDLL: shortstring; stdcall; external 'PrPrueba3.dll';
 
var
Form1: TForm1;
 
implementation
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
sCad: string;
begin
//llamada a la DLL
sCad := BUSCAARTICULO_MostrarDLL;
if sCad <> '' then ShowMessage( sCad );
end;
end.

seoane 30-06-2006 16:56:46

Tienes varias opciones, escribir la ruta completa de la dll o añadir la carpeta donde esta la dll a la variable de entorno PATH para que asi windows sepa donde buscarla. La primera tiene el inconveniente de que tienes que saber de antemano la ruta completa donde estara ubicada la dll y en el segundo caso necesitas que el instalador agregue la carpeta al Path. Aunque siempre puedes copiar la libreria a la carpeta de windows, aunque creo que no es eso lo que buscas.

Tambien puedes cargar la libreria de forma dinamica, es decir, una vez iniciada la aplicacion. Aqui tienes un ejemplo de como hacerlo


La franja horaria es GMT +2. Ahora son las 02:18:30.

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