Hoy os hablamos de las librerías de enlace dinamico, DLL (Dinamic Link Library). Una DLL no es más que una porción de programa que realiza diversas funciones, que está alojada en un directorio del sistema y que se ejecuta a petición de una aplicación. Dicha aplicación la enlaza dinámicamente, es decir, ejecuta y llama a las funciones que la dll aloja mientras se ejecuta para obtener los datos o el comportamiento que la aplicación desea. Las ventajas que tienen las DLL son claras:
- Reducen el tamaño de los archivos ejecutables: Ya que la mayor parte de las funciones se realizan dentro de la dll, la aplicación un mero ejecutante de las mismas y mostrador de los resultados obtenidos, lo que minimiza el tamaño del programa.
- Pueden estar compartidas entre varias aplicaciones: Por ejemplo las Microsoft Fundation Classes MFC se encargan de gestionar la parte gráfica de Windows. Muchas aplicaciones hacen uso de dichas dll.
- Facilitan la gestión y aprovechamiento de la memoria del sistema: Al ser el sistema operativo el que realiza la carga, es capaz de gestionarlas de una manera más óptima. Además, al estar compartidas no es necesario tener más que una copia al tiempo cargada en la memoria, lo que redunda en mejoras de aprovechamiento y rendimiento.
- Flexibilidad frente a cambios: No es necesario rehacer todo el programa para solucionar errores u optimizar el rendimiento. Símplemente modificando la dll se obtiene el resultado pretendido.
Bonito, ¿verdad? Pues no. Los cambios en las dll hacen que al final dejen de ser compatibles, por lo que un programa que instale una dll compartida con funciones incompatibles con el resto generará innumerables problemas a los demás. Otro problema asociado a las mismas es que si un programa que es desinstalado borra acidentalmente una dll compartida, los que hagan uso de ella dejarán de funcionar con normalidad. Esto ha sido llamado «El infierno de las dll». Aunque Microsoft lo ha solucionado, lo cierto es que sigue siendo un problema en programas antíguos que todavía perduran.