Delphi - Crear una DLL

   
Vista:

Crear una DLL

Publicado por Sephiroth (1 intervención) el 11/06/2008 08:27:16
Hola
¿cómo es que se crean las dll en Delphi?,
este es mi método;

FileNewOther...DLL Wizzard

y este es mi codigo fuente:

library dl_lde_prueba;
uses Dialogs;
begin
ShowMessage('Hola mundo');
end;

lo copie de un programa, ahora, nunca he hecho una dll en delphi, y me gustaría aprender a hacerla, nunca he hecho nada mas que aplicaciones, no módulos, ni dlls, ni nada de eso.

Ayuda please!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Crear una DLL

Publicado por pacopaz (104 intervenciones) el 11/06/2008 16:40:30
En lo personal poco es lo que he usado los dll, quizás para funciones menores en el programa. Y es quizás por que las funciones mayores requieren de conexiones a bases de datos y cosas por el estilo, para lo cual prefiero que estén dentro del programa principal para implementar una sola conexión.
Además de estos, el paso de parámetros está condicionado, sobretodo, en el manejo de strings. Mientras que es más fácil declarar una variable como String, para pasarlo como parámetro a una función o procedimiento en un dll, hay que pasarla como ShortString o como PChar, lo cual hace que tengas que limitar dichas funciones o hacer programación adicional para cumplir con estas reglas.
Todo esto, además de considerar que las dll's son una especie (finalmente) en peligro de extinsión, toda vez que la importación de componentes externos se está mudando a los tbl.
En fin, luego de la leve introducción, he de decir que el manejo de dll's es más sencillo de lo que en un principio parece.
Crear una dll se limita a crear un proyecto dll. Yo, como te digo, lo único que he hecho es hacer procedimientos menores y lo que hago es generar dichos procedimientos y luego declararlos en la sección exports. Luego de eso, en mi programa los importo y listo.
Así, los proyectos dll se ven de esta manera:

library Libreria;

uses
SysUtils, Classes, ...;

procedure Primero(...); stdcall;
begin
...
end;

procedure Segundo(...); stdcall;
begin
...
end;

function Tercero(..):...; stdcall;
begin
...
end;

...

exports
Primero, Segundo, Tercero;

begin
end.

Y en mi programa principal (donde normalmente tengo una unidad con varias constantes globales y esas cosas), declaro las funciones y procedimientos a importar de la siguiente manera:

procedure Uno(...); stdcall; extermal 'Libreria.dll' name 'Primero';
procedure Segundo(...); stdcall; external 'Libreria.dll' name 'Segundo';
function Tres(...)...; stdcall; external 'Libreria.dll' name 'Tercero';

Con esto logro utilizar sin problemas los procedimientos almacenados en la dll, aunque haciéndolo así sé que la dll se carga desde el inicio del programa y no cada vez que llamo a alguno de los procedimientos... pero hoy que las memorias de 1Gb cuestan 50uds, quien cuenta bytes?

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias

Publicado por Sephiroth (1 intervención) el 15/06/2008 02:55:46
gracias hermano, me ha servido de mucho, es cierto que esta al expirar eso de las dll´s, pero bueno, solo quería saber como era la cosa por si algun día lo necesitaba.
Ahora ire a probar que tal.
Salu2ssssss
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar