Cómo crear y utilizar una librería (dll) en Delphi. Os explicamos (con ejemplo incluido) cómo crear un procedimiento en una DLL y cómo llamar a este procedimiento desde una aplicación externa en Delphi y Visual Basic.

Librería DLL

Una DLL ó Dynamic Linking Library (Bibliotecas de Enlace Dinámico), es un archivo con código ejecutable que se carga, bajo demanda del programa que lo llama, por parte del sistema operativo. Contienen funcionalidad o recursos que utilizan otras aplicaciones. Algunas de las ventajas de su uso:

  • Reducen el tamaño de los archivos ejecutables de la aplicación.
  • Pueden estar compartidas entre varias aplicaciones, cuando el código es suficientemente genérico puede resultar de utilidad para varias aplicaciones.
  • Facilitan la gestión y aprovechamiento de la memoria del sistema.
  • Incrementan la flexibilidad frente a cambios.

Crear una librería DLL en Delphi 6

En primer lugar abriremos Delphi, desde el menú «File» – «New» – «Other…»:

Crear una librería DLL en Delphi 6

seleccionaremos «DLL Wizard» y pulsaremos «OK»:

Crear una librería DLL en Delphi 6

El código que nos aparecerá por defecto:

Podremos añadir formularios, como si de una aplicación normal se tratara (salvando algunas excepciones) y procedimientos. Para hacer que los procedimientos puedan ser utilizados por aplicaciones externas, deberemos añadir la cláusula «export» en una línea de código con «export nombreProcedimiento» . Por ejemplo, añadiremos un procedimiento que al ser llamado por otra aplicación muestre un mensaje con el texto que se le pase como parámetro. Para ello añadiremos el siguiente código después de «{$R *.res}»:

tendremos que añadir al «uses» la unidad «Dialogs» que es donde se encuentra la función «ShowMessage», el código completo quedará así:

guardaremos el proyecto, desde «File» – «Save all»:

Crear una librería DLL en Delphi 6

compilaremos el proyecto, para comprobar errores y generar el fichero .dll, desde el menú «Project» – «Build nombreProyecto «:

Crear una librería DLL en Delphi 6

Si no ha habido problemas nos habrá creado un fichero .dll el el directorio del proyecto, con el mismo nombre que el del proyecto, en nuestro caso «ejemploLibreria.dll»:

Crear una librería DLL en Delphi 6

Utilización de la librería DLL creada en Delphi

Una vez generada la dll, realizaremos una aplicación de ejemplo que haga una llamada a la misma y al procedimiento creado anteriormente «pruebaMensaje». Para ello abriremos Delphi, menú «File» – «New» – «Application». En el código de la unidad del formulario desde el que queramos utilizar la dll, añadiremos lo siguiente:

El código completo del formulario será:

Por supuesto, si la librería no está en la misma carpeta que el ejecutable que la llama o si no está en la carpeta del sistema (System32), dará el siguiente error:

Utilización de la librería DLL creada en Delphi

con el texto:

accesoDLL.exe – No se puede encontrar el componente
Error al iniciar la aplicación porque no se encontró ejemploLibreria.dll. La reinstalación de la aplicación puede solucionar el problema.
Aceptar

Para solucionarlo y para que cualquier aplicación externa pueda utilizar nuestra DLL la copiaremos a la carpeta del sistema, normalmente ubicada en:

C:/Windows/System32

Utilización de la librería DLL creada en Delphi

Si ejecutamos la aplicación que accede a la DLL obtendremos este resultado:

Utilización de la librería DLL creada en Delphi

Utilización de la librería DLL creada en Visual Basic

En este caso hemos utilizado Delphi para realizar la aplicación que utiliza la DLL creada anteriormente, pero podríamos utilizar las funciones de la DLL con cualquier lenguaje de programación. Por ejemplo, para utilizarla con Visual Basic, añadiríamos la siguiente línea de código:

y en el procedimiento que haga la llamada:

La aplicación quedará de la siguiente forma:

Utilización de la librería DLL creada en Visual Basic

y si la ejecutamos:

Utilización de la librería DLL creada en Visual Basic

Nota: se ha utilizado la directiva estándar de tipo de llamada «stdcall», porque es la que normalmente se utiliza, es compatible con cualquier lenguaje.

Si eres usuario registrado (puedes hacerlo desde aquí gratuitamente) puedes descargar el código fuente (completo y totalmente gratuito/free) pulsando aquí.