ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Bibliotecas de enlace dinamico en delhpi


Enviado por   •  6 de Octubre de 2015  •  Informe  •  7.345 Palabras (30 Páginas)  •  215 Visitas

Página 1 de 30

Bibliotecas de enlace dinámico (DLL)

Las librerías (o bibliotecas) de enlace dinámico o DLL (Dynamic Link Library), son archivos que contienen código ejecutable por las aplicaciones, pero que a diferencia de éstas, no pueden ser ejecutadas por sí mismas, sino que están pensadas para ser llamadas desde otras aplicaciones. Podemos imaginar las DLL como unidades de código, ya que la función principal de ellas es ofrecer funciones y procedimientos a los programas.

La diferencia principal entre una unidad de código y una DLL es que la primera se enlaza en el código ejecutable de manera permanente o estática (static link), de forma que en el propio .EXE se incluye la unidad de código. Por el contrario, cuando se utilizan rutinas en una DLL, el enlace se produce en el momento de la ejecución dinámicamente (dynamic link).

Si en una máquina se utilizan diez programas que necesiten una misma unidad de código, se necesitan diez copias de la unidad, mientras que si se utiliza una DLL solo será necesaria una única copia en memoria. De esta manera se hacen accesibles funciones a las aplicaciones sin necesidad de que en el ejecutable de dichas aplicaciones se incluyan las funciones, con lo que esto supone de eficiencia en la utilización de la memoria, gracias a la compartición del recurso. Solo una copia de la función estará cargada en la memoria de la máquina, aunque varias aplicaciones la utilicen simultáneamente.

La gran ventaja de las DLL es la reducción de memoria y compartición de recursos, pero al no incluirse en el propio ejecutable, debe estar instalada la DLL en la máquina para que los programas funcionen. Cuando instalamos nuestros propios programas, no podemos olvidarnos de incluir las DLL.

Una unidad de código permite exportar tipos, registros y constantes, mientras que una DLL sólo permite exportar funciones y procedimientos. Por esta causa, si una función de una DLL requiere estructuras de datos propias, éstas deben ser definidas en los programas.

Otra de las ventajas de las DLL es que al residir ya compiladas en el sistema son relativamente independientes del lenguaje en el que fueron desarrolladas. Una unidad de código sólo puede ser aprovechada en aplicaciones que utilicen el mismo lenguaje, mientras que podemos perfectamente implementar nuestras funciones en Delphi, para luego utilizarlas en aplicaciones escritas en Visual Basic y C o C++, lo que las hace más atractivas en proyectos multilenguaje. Claro está que para mantener esta universalidad de las DLL no podemos utilizar componentes o tipos de datos exclusivos de Delphi que no estén soportados por otros lenguajes.

Enlaces estático y dinámico.

Con la única intención de introducir algunos conceptos teóricos, y entender mejor que es un enlace entre unidades de código, vamos a explicar brevemente cómo trabaja Windows. Podemos definir el enlace cómo el proceso por el cual rutinas externas a una aplicación son incorporadas al ejecutable. Como ya sabemos, existen dos tipos de enlaces:

Enlace estático: El enlace estático es aquel que se realiza durante la creación del programa, incorporando las rutinas y unidades externas al propio ejecutable. Éste era el sistema utilizado en aplicaciones DOS. En este sistema operativo, los módulos de los programas que definen las funciones externas se pre compilan y almacenan en archivos de bibliotecas. Cuando un entorno de desarrollo crea el ejecutable, utiliza un programa enlazador (link) que analiza y busca las referencias a funciones externas no definidas en el código fuente. Posteriormente recorre los archivos de bibliotecas, copia los módulos con las rutinas necesarias para el ejecutable, y define los enlaces utilizados. La ventaja de este tipo de enlace es que las bibliotecas de funciones solo deben residir en el entorno de desarrollo, no es necesario que se distribuyan junto a la aplicación, ya que el código fuente de la aplicación incluye todo lo que necesita. El ejecutable será mayor pero autosuficiente. El principal problema del enlace estático es que requiere demasiada memoria. Cada ejecutable gastará una buena cantidad de recursos. En DOS el problema no era tal porque no pueden ejecutarse varias aplicaciones simultáneamente, por lo cual todos los recursos están a la disposición de la aplicación. Con Windows el marco de trabajo es totalmente diferente. No solo podemos tener multitud de aplicaciones utilizando los mismos recursos y, por consiguiente, desperdiciando memoria; sino que la cantidad de memoria desperdiciada es mucho mayor porque las aplicaciones de Windows utilizan cientos de llamadas al sistema operativo, mientras que en DOS sólo se utilizaban unas pocas interrupciones.

Enlace dinámico: Al igual que los enlaces estáticos, aquí también se pre compilan los módulos y se almacenan en bibliotecas; pero en este caso en DLL, capaces de enlazarse dinámicamente al ejecutable cuando éste lo requiera. Al crear el ejecutable, la función del enlazador se limita a analizar los objetos y módulos que no están presentes, y generando una lista con las funciones externas, y las DLL donde pueden encontrarse. A esto se lo llama importación de las funciones. Podríamos decir que el programa enlazador es el propio Windows, pues cuando se necesita el uso de una DLL, carga ésta en memoria, obtiene las direcciones donde se han almacenado las diferentes rutinas, y enlaza dinámicamente estas direcciones a las llamadas de la aplicación.

Llamadas a DLL.

Cuando una aplicación necesita alguna de las funciones definidas en una DLL que no está operativa, ésta es cargada en memoria quedando disponible para la aplicación que ha solicitado la DLL o para cualquier otra aplicación que la necesite. Windows crea un contador de la DLL con el que controla el número de aplicaciones que están utilizándola. De esta manera, si otra aplicación solicita el uso de la librería, no se vuelve a cargar una copia de la DLL, sino que simplemente se incrementa en uno el valor del contador. Así mismo, cuando una aplicación que estaba utilizando una DLL es descargada de memoria, se decrementa el contador. En el momento que no haya ninguna aplicación utilizando la DLL (contador en cero), Windows descarga la DLL de memoria.

Creación de una DLL.

La creación de una DLL puede ser tan complicada como queramos porque en el fondo, su complejidad vendrá dada por las funciones definidas en ella.

Comencemos definiendo una DLL muy simple, que solo incluirá una función sencilla, centrémonos de esta manera en la creación de la unidad, para ir ampliado conceptos gradualmente.

Aunque no es imprescindible, es más sencillo crear las DLL a partir del Object Repository, mediante la opción File/New/Other… en la ventana emergente, en la lista de New Items elegimos Delphi Proyects, para luego seleccionar el ícono Dynamic – Link Library. Y por supuesto aceptar (OK).

...

Descargar como (para miembros actualizados) txt (42 Kb) pdf (2 Mb) docx (883 Kb)
Leer 29 páginas más »
Disponible sólo en Clubensayos.com