LIBRERIAS DINAMICAS

Antes de conocer los pormenores de la construcción y uso de una librería dinámica (DLL) en un programa C++, es conveniente tener una perspectiva general del mecanismo que rige su funcionamiento.

Como se indicó en la introducción ( 1.4.4b), una librería es simplemente un trozo de código que contiene recursos preconstridos; recursos que pueden ser utilizados en un ejecutable. Sin embargo, si nos fijamos un poco, vemos que esta definición es un tanto ambigua, y puede encajar en objetos que no son realmente librerías. En realidad, la utilización de recursos preconstruidos por parte de un ejecutable puede realizarse de tres formas que podríamos resumir del siguiente modo:

Utilización de librerías estáticas. Es el método tradicional. Como hemos señalado, son las clásicas colecciones de ficheros objeto .obj (compilados), que en el momento de la construcción de la aplicación,

son incluidos por el “Linker” en el propio ejecutable ( 1.4.4b1).

Utilización de librerías dinámicas. En esta modalidad, los recursos ocupan un fichero independiente del ejecutable, que puede ser utilizado por cualquier aplicación que lo necesite. En algún momento, durante la carga del ejecutable, o posteriormente, en run-time, el ejecutable deberá integrar este bloque de código en su propio espacio, de forma que pueda acceder a los recursos contenidos en él.

Utilización de programas externos. Es también un recurso utilizado desde siempre en informática. Un ejecutable puede llamar a ejecución a otro mediante mecanismos de varios tipos. El ejecutable llamado proporciona alguna funcionalidad antes de su terminación, y dispone de su propio espacio de ejecución independiente del programa que lo invocó.

3. Librerías dinámicas La utilización de objetos dinámicos supone dejar pendiente en el montaje de la aplicación el enlace de dichos objetos. Cuando la aplicación está en ejecución, y sólo entonces, se produce el enlace (dinamic binding) con los objetos contenidos en la librería.

La creación de librerías dinámicas corre a cargo del enlazador o montador (en nuestro caso el ld) aunque también es posible indicar al compilador las opciones necesarias para el montaje y de ese modo, será él quien se encargue de pasarselas al montador.

Reynaldo Solis A.

(Tec Matehuala S.L.P.)