Infierno DLL


En informática , DLL Hell es un término para las complicaciones que surgen cuando se trabaja con bibliotecas de enlace dinámico (DLL) que se utilizan con los sistemas operativos Microsoft Windows , [1] en particular las ediciones heredadas de 16 bits , que se ejecutan en un solo espacio de memoria.

DLL Hell puede manifestarse de muchas maneras diferentes en las que las aplicaciones no se inician ni funcionan correctamente.

Las DLL son la implementación de bibliotecas compartidas de Microsoft . Las bibliotecas compartidas permiten que el código común se empaquete en un contenedor, la DLL, y que cualquier software de aplicación del sistema lo use sin cargar varias copias en la memoria. Un ejemplo simple podría ser el editor de texto GUI , que es ampliamente utilizado por muchos programas. Al colocar este código en una DLL, todas las aplicaciones del sistema pueden usarlo sin usar más memoria. Esto contrasta con las bibliotecas estáticas , que son funcionalmente similares pero copian el código directamente en la aplicación. En este caso, cada aplicación crece según el tamaño de todas las bibliotecas que utiliza, y esto puede ser bastante grande para los programas modernos.

El problema surge cuando la versión de la DLL en la computadora es diferente a la versión que se usó cuando se creó el programa. Las DLL no tienen un mecanismo incorporado para la compatibilidad con versiones anteriores, e incluso los cambios menores en la DLL pueden hacer que su estructura interna sea tan diferente de las versiones anteriores que intentar usarlas generalmente hará que la aplicación se bloquee. Las bibliotecas estáticas evitan este problema porque la versión que se usó para construir la aplicación está incluida dentro de ella, por lo que incluso si existe una versión más nueva en otra parte del sistema, esto no afecta a la aplicación.

Una razón clave de la incompatibilidad de versiones es la estructura del archivo DLL. El archivo contiene un directorio de los métodos individuales (procedimientos, rutinas, etc.) contenidos dentro de la DLL y los tipos de datos que toman y devuelven. Incluso los cambios menores en el código DLL pueden hacer que este directorio se reorganice, en cuyo caso una aplicación que llama a un método en particular creyendo que es el cuarto elemento en el directorio podría terminar llamando a una rutina completamente diferente e incompatible, lo que normalmente hace que la aplicación se bloquee.

Hay varios problemas que se encuentran comúnmente con las DLL, especialmente después de que se hayan instalado y desinstalado numerosas aplicaciones en un sistema. Las dificultades incluyen conflictos entre las versiones de DLL, dificultad para obtener las DLL requeridas y tener muchas copias de DLL innecesarias.