Sie sind auf Seite 1von 4

Programación Avanzada

Clase Práctica #2

Tema: Uso de las DLLs (Dinamic Library Link).

Objetivos:

• Conocer las características principales de las DLLs y su uso en el lenguaje de programación C#.
• Adquirir habilidades especiales en el uso de la herramienta de programación SharpDevelop.

Introducción

En la plataforma .NET se distinguen dos tipos de módulos de código compilado: ejecutables (extensión .exe) y
librerías de enlace dinámico (extensión .DLL generalmente). Ambos son ficheros que contienen definiciones de
tipos de datos, y la diferencia entre ellos es que sólo los primeros disponen de un método especial que sirve de
punto de entrada a partir del que es posible ejecutar el código que contienen haciendo una llamada desde la línea de
comandos del sistema operativo. A ambos tipos de módulos se les suele llamar ejecutables portables (PE), ya que su
código puede ejecutarse en cualquiera de los diferentes sistemas operativos de la familia Windows para los que
existe alguna versión del CLR (Common Language Runtime).

Una biblioteca de vínculos dinámicos (por su traducción al español) es un archivo ejecutable que actúa como una
biblioteca de funciones compartida. La vinculación dinámica proporciona a los procesos una forma de llamar a una
función que no forma parte del código ejecutable. El código ejecutable de la función está en un archivo DLL, que
contiene una o más funciones que se compilan, vinculan y almacenan de forma independiente de los procesos que
las utilizan. Los archivos DLL también facilitan el uso compartido de datos y recursos. Distintas aplicaciones
pueden tener acceso simultáneamente al contenido de una única copia de un archivo DLL en la memoria.

La vinculación dinámica difiere de la vinculación estática en que se permite que un módulo ejecutable (ya sea un
archivo .DLL o un archivo .exe) incluya únicamente la información necesaria para buscar el código ejecutable de
una función DLL en tiempo de ejecución. En la vinculación estática, el vinculador obtiene todas las funciones a las
que se hace referencia desde la biblioteca de vínculos estáticos y las coloca en el código del archivo ejecutable.
Leer más…

A continuación se desarrollara una Calculadora sencilla con las cuatro operaciones básicas conocidas (suma, resta,
multiplicación y división). Para ellos se utilizaran dos tipos de proyectos o soluciones soportados en la herramienta
SarpDevelop: Windows Application y Windows User Control Library.

Desarrollo

Creación y desarrollo de una DLL

Para crear una DLL se utiliza el tipo de proyecto Windows User Control Library disponible en las plantillas de
las aplicaciones de Windows. Desde la herramienta SarpDevelop se debe seleccionar la opción File->New-
>Solution:

Figura 1. Creación un nuevo proyecto.


A continuación se debe escoger el tipo de proyecto antes mencionado:

Figura 2. Selección del tipo de proyecto Windows User Control Library.

Una vez creado el proyecto se muestra lo siguiente:

Figura 3. Zona de trabajo del Windows User Control Library.

A continuación del método que aparece en la figura anterior se escribirán los que permiten realizar las cuatro
operaciones definidas en la Calculadora. Quedarían escritos de la siguiente manera:
Figura 4. Implementación de las operaciones aritméticas básicas de la Calculadora.

Luego de implementados los métodos el proyecto debe ser construido presionando el botón que aparece en la
barra superior de la herramienta SharpDevelop. Si por el contrario es ejecutado en las imágenes o que
aparecen en la misma barra se debe mostrar el siguiente mensaje de error:

Figura 4. Mensaje de error generado al tratar de ejecutar una solución de tipo Windows User Control Library.

Si el código escrito no contiene errores para cualquiera de los casos anteriores se genera un archivo con el nombre
del proyecto y extensión DLL en la carpeta bin del mismo. Esta DLL debe ser añadida a las referencias de la
Windows Application encargada de dar forma a la Calculadora.

Aplicación de ventana (Calculadora)

Para crear una aplicación de ventana se realiza la operación descrita en la figura 1 y a continuación se selecciona
una solución del tipo Windows Application. Lo primero que se debe hacer es importar la referencia a la DLL
anterior, con lo cual la misma quedará almacenada en la carpeta bin de la nueva aplicación. Este proceso se realiza
sobre la carpeta References disponible desde el inspector de proyecto de SharpDevelop. La siguiente figura
muestra lo anterior:

Figura 5. Estructura de la solución de las aplicaciones de ventana.

Luego de ubicar el cursor del ratón sobre dicha carpeta se da click derecho y se selecciona la opción Add
Reference, luego se escoge la pestaña .NET Assembly Browser y se adiciona la DLL al proyecto.
Figura 6. Herramienta de SharpDevelop para la carga de DLLs.

Lo siguiente es incluir la DLL adicionada al proyecto en el fichero donde se utilizarán las clases que posee. La
siguiente figura ilustra esto:

Figura 7. Inclusión de la DLL LC_Calculadora en el fichero donde se utilizará en la Calculadora.

A partir de ese momento ya se pueden utilizar la o las clases programadas en la DLL, siempre y cuando se cree una
instancia de la misma claro esta. A continuación lo anteriormente expuesto:

Figura 8. Sintaxis para la instanciación de una DLL.

Una vez realizado el paso anterior se pueden invocar los métodos disponibles en la DLL (encargados de realizar las
operaciones básicas de la Calculadora), un ejemplo de esto se muestra en la siguiente figura:

Figura 9. Invocación del método Suma de la DLL.

De esta manera se puede desarrollar la Calculadora a partir de los métodos que contiene la DLL.

Conclusiones

El uso de la vinculación dinámica, en lugar de la vinculación estática, ofrece varias ventajas. Los archivos DLL
permiten ahorrar memoria, reducir el intercambio de páginas, ahorrar espacio en disco, facilitar las actualizaciones,
proporcionar asistencia post-venta, proporcionar un mecanismo para ampliar las clases de la biblioteca MFC,
proporcionar compatibilidad con programas multilenguaje y facilitar la creación de versiones internacionales.

Das könnte Ihnen auch gefallen