ES

www.codigo-facil.com > Delphi, creacion y utilizacion de una DLL

Crear una DLL en Delphi


En este articulo vamos a ver la definicion y los pasos necesarios para la creacion de una DLL.

Capitulos

Delphi, creacion y utilizacion de una DLL

En este articulo veremos los pasos necesarios para crear, editar y utilizar una DLL en Delphi.

Formularios dinamicos a traves de una DLL

Veremos como crear una DLL en Delphi que nos permita la creacion de formularios en tiempo de ejecucion. Asi como la creacion de una clase base que nos facilite la gestion de los metodos utilizados en dicha DLL.

Que es una DLL ?


Una DLL ( Dynamic Linking Libray ) es un archivo o libreria, que contiene una serie de rutinas o recursos, que se cargan en la memoria del sistema en el momento de la ejecucion del programa que las incluye, estando disponibles para su posterior utilizacion.

Las DLL presentan una serie de ventajas :
  • Puesto que son partes de codigo independientes al programa, su uso reduce el tamaño del ejecutable final.
  • Pueden ser compartidas por otras aplicaciones, incluso aquellas que han sido generadas con lenguajes de programacion diferentes.
  • Facilitan la gestion y el aprovechamiento de la memoria del sistema.

Como creamos una DLL ?


Para crear una DLL en Delphi abrimos el cuadro de dialogo correspondiente a la creacion de un nuevo item:

File -> New -> Other

como podemos ver abajo en la captura de pantalla, seleccionamos la opcion "DLL Wizard" (puedes pinchar en la imagen para ver a tamaño completo).
Una vez que hemos efectuado esta operacion en el editor de nos aparecera el siguiente codigo por defecto :

  1. library dllPrueba;
  2.  
  3. { Important note about DLL memory management: ShareMem must be the
  4. first unit in your library's USES clause AND your project's (select
  5. Project-View Source) USES clause if your DLL exports any procedures or
  6. functions that pass strings as parameters or function results. This
  7. applies to all strings passed to and from your DLL--even those that
  8. are nested in records and classes. ShareMem is the interface unit to
  9. the BORLNDMM.DLL shared memory manager, which must be deployed along
  10. with your DLL. To avoid using BORLNDMM.DLL, pass string information
  11. using PChar or ShortString parameters. }
  12.  
  13. uses
  14.    SysUtils,
  15.    Classes;
  16.  
  17. {$R *.res}
  18.  
  19. begin
  20. end.

A partir de ahora ya podemos añadir nuestras funciones y procedimientos.
Nosotros vamos a realizar un ejemplo sencillo para ver de forma rapida como seria su implementacion. Como es habitual primero colocare el codigo y despues realizare los comentarios que cree convenientes.

En nuestro ejemplo crearemos una DLL que contenga un procedimiento el cual mostrara un mensaje en pantalla con el contenido de la variable que pasaremos en el momento de llamar al procedimiento
  1. library dllPrueba;
  2.  
  3. uses
  4.    SysUtils,
  5.    Classes,
  6.    Dialogs;
  7.  
  8. {$R *.res}
  9.  
  10. procedure creaMensaje(cont:string); stdcall;
  11. begin
  12.    showmessage(cont);
  13. end;

  14. exports creaMensaje;
  15.  
  16. begin
  17. end.
Comentarios :

En el ejemplo anterior destacamos la inclusion de "Dialogs" en la clausula uses, puesto que es necesario para utilizar el procedimiento  "showmesssage" .

A destacar la directiva "stdcall" que es la que le da compativilidad con todos los lenguajes.

Por ultimo destacar que la clausula "exports" se incluye para posibilitar la llamada al procedimiento por parte de aplicaciones externas.

Una vez que hemos terminado el codigo lo guardamos el proyecto con el nombre de dllPrueba y a continuacion lo compilamos.

guardar : File -> Save All
compilar : Project-> Build (nombre de proyecto)

Si todo ha sucedido correctamente en el directorio de nuestro proyecto deberiamos tener un archivo con la extension ".dll" con el mismo nombre que el proyecto, es decir "dllPrueba.dll".

Como vinculamos nuestra DLL?


Una vez que hemos terminado nuestra DLL creamos un nuevo proyecto, en este caso creamos una aplicacion que contenga un boton para poder incluir en el evento "onClick" la llamada al procedimiento "creaMensaje".

Para vincular nuestra dll basta con incluir el siguiente codigo

procedure creaMensaje (cont : string); stdcall external 'dllPrueba.dll';

Asi el codigo final seria el siguiente :

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.    Windows, Messages, SysUtils, Variants, Classes,
  7.    Graphics, Controls,  Forms, Dialogs, StdCtrls;
  8.  
  9. type
  10.    TForm1 = class(TForm)
  11.    Button1: TButton;
  12.    procedure Button1Click(Sender: TObject);
  13.  
  14. private
  15. { Private declarations }

  16. public
  17. { Public declarations }
  18. end;
  19.  
  20. var
  21.    Form1: TForm1;
  22.  
  23. procedure creaMensaje (cont : string); stdcall external 'dllPrueba.dll';
  24.  
  25. implementation
  26.  
  27. {$R *.dfm}
  28.  
  29. procedure TForm1.Button1Click(Sender: TObject);
  30. begin
  31.   creaMensaje('hola');
  32. end;
  33.  
  34. end.

Nota :
A destacar por ultimo que para evitar errores nuestra dll se debe encontrar en el mismo directorio donde se encuentra el ejecutable principal, o en la carpeta que tenga asignada el sistema para enlazar librerias del sistema, como podria ser el directorio "C:/Windows/System32"

Ultimas noticias

Crea tu propio framework en javascript

Recopilacion de articulos donde mostrare paso a paso como podemos crear nuestro propio framework en javascript, totalmente funcional y listo para ser utilizado en nuestros futuros proyectos.

Para mas informacion :

Tutorial para crear tu propio FrameWork en JavaSript

Más información
13/12/2013 11:42:57

Como crear una DLL en delphi?

En esta serie de 2 capitulos veremos como crear y utilizar una DLL en Delphi.

Abajo os dejo los enlaces a estos 2 capitulos que componen este mini tutorial, espero que sea de vuestro agrado :

Capitulo 1 : Creacion y utilizacion de una DLL

Capitulo 2 : Creacion de un formulario dinamico utilizando una DLL
Más información
19/09/2013 17:35:59

Ya puedes publicar tu opinion

A partir de ahora ya puedes comentar todas las publicaciones que encuentres en el portal.

Podras opinar tanto si algo te gusta como si no, o si crees que es conveniente completar alguna publicacion, ya que la encuentras incompleta o erronea.

O simplemente por si nos quieres felictar por algo bien hecho :-).

Valoraremos cualquier critica que nos puedas hacer.
Más información
20/05/2013 15:30:10

Tutorial PHP5

Fundamentos de la programacion orientada a objetos
Un interesante tutorial repartido en una serie de capitulos donde se tratan los conocimientos basicos de la programacion orientada a objetos (POO) en PHP5.

Para mayor informacion siga el siguiente enlace :

Tutorial POO en PHP

Más información
04/09/2013 15:44:29
0