¿Qué es una biblioteca de vínculos dinámicos (DLL) y preguntas frecuentes?
Resumen Este artículo explica qué es una biblioteca de vínculos dinámicos (DLL) y los diversos problemas que pueden ocurrir al usar una DLL. Luego, este artículo explica algunos problemas avanzados que debes considerar al desarrollar tu propia DLL. Al explicar qué es una DLL, este artículo explica los métodos de vinculación dinámica, las dependencias de DLL, los puntos de entrada de DLL, las funciones de DLL exportadas y las herramientas de solución de problemas de DLL. Este artículo concluirá con una comparación de alto nivel de archivos DLL y ensamblados de Microsoft .NET Framework. Introducción Para los sistemas operativos Microsoft Windows enumerados en la sección "Se aplica a", gran parte de la funcionalidad del sistema operativo la proporcionan bibliotecas de vínculos dinámicos (DLL). Además, cuando ejecuta un programa en uno de estos sistemas operativos Windows, gran parte de la funcionalidad del programa puede ser proporcionada por archivos DLL. Por ejemplo, algunos programas pueden contener muchos módulos diferentes y cada módulo del programa está contenido y distribuido desde una DLL. El uso de DLL ayuda a promover la modularidad del código, la reutilización del código, el uso eficiente de la memoria y la reducción del uso del espacio en disco. Como resultado, el sistema operativo y los programas se cargan y ejecutan más rápido y ocupan menos espacio en el disco de su computadora. Cuando un programa utiliza una DLL, un problema llamado dependencia puede impedir que el programa se ejecute. Cuando un programa usa una DLL, se crea una dependencia. Si otro programa sobrescribe y corrompe esa dependencia, es posible que el programa original no se ejecute correctamente. Con la introducción de Microsoft .NET Framework, la mayoría de los problemas de dependencia se han eliminado mediante el uso de ensamblados. ¿Qué es una DLL? Una DLL es una biblioteca que contiene código y datos que pueden ser utilizados por múltiples programas simultáneamente. Por ejemplo, en los sistemas operativos Windows, la DLL Comdlg32 realiza funciones comunes relacionadas con los cuadros de diálogo. Por lo tanto, cada programa puede utilizar la funcionalidad contenida en esta DLL para implementar el cuadro de diálogo Abrir. Esto ayuda a promover la reutilización de código y el uso eficiente de la memoria. Mediante el uso de DLL, los programas se pueden modularizar y componer de componentes relativamente independientes. Por ejemplo, un programa de contabilidad podría venderse por módulos. Los módulos individuales se pueden cargar en el programa principal en tiempo de ejecución (si el módulo correspondiente está instalado). Los programas se cargan más rápido porque los módulos son independientes entre sí y los módulos solo se cargan cuando se solicita la funcionalidad correspondiente. Además, las actualizaciones se pueden aplicar más fácilmente a módulos individuales sin afectar otras partes del programa. Por ejemplo, es posible que tenga un programa de cálculo de nómina en el que las tasas impositivas cambien cada año. Cuando los cambios están aislados en la DLL, puede aplicar la actualización sin reconstruir ni instalar todo el programa. La siguiente tabla describe algunos de los archivos que se implementan como archivos DLL en el sistema operativo Windows: Archivos de control ActiveX (.ocx) Un ejemplo de control ActiveX es el control de calendario, que le permite seleccionar una fecha de un calendario. ?6?1Archivos del Panel de control (.cpl) Un ejemplo de un archivo .cpl es un elemento ubicado en el Panel de control. Cada entrada es una DLL privada. ?6?1 Archivo de controlador de dispositivo (.drv) Un ejemplo de controlador de dispositivo es un controlador de impresora que controla la impresión en una impresora. Ventajas de las DLL La siguiente tabla ilustra algunas de las ventajas que se ofrecen cuando los programas usan DLL: Usar menos recursos Cuando varios programas usan la misma biblioteca de funciones, las DLL pueden reducir la cantidad de código cargado en el disco y la memoria física. Esto puede afectar en gran medida no sólo a los programas que se ejecutan en primer plano, sino también a otros programas que se ejecutan en el sistema operativo Windows. ?6?1 Promover la arquitectura modular DLL ayuda a promover el desarrollo de programas modulares. Esto puede ayudarle a desarrollar programas grandes que requieren versiones en múltiples idiomas o programas que requieren una arquitectura modular.
Un ejemplo de programa modular es un programa de contabilidad que tiene múltiples módulos que se pueden cargar dinámicamente en tiempo de ejecución. ?6?1 Simplifique la implementación y la instalación Cuando es necesario actualizar o reparar funciones en la DLL, implementar e instalar la DLL no requiere restablecer el vínculo entre el programa y la DLL. Además, si varios programas utilizan la misma DLL, varios programas se beneficiarán de la actualización o solución. Este problema puede ocurrir con más frecuencia cuando utiliza archivos DLL de terceros que se actualizan o reparan periódicamente. Dependencias de DLL Las dependencias se crean cuando un programa o DLL utiliza funciones de DLL de otra DLL. Por lo tanto, el programa ya no es independiente y, si esta dependencia se corrompe, el programa puede experimentar problemas. Por ejemplo, es posible que el programa no se ejecute si ocurre una de las siguientes situaciones: Una DLL dependiente se actualiza a una nueva versión. ?6?1 DLL de dependencia fija. ?6?1La DLL dependiente se sobrescribe con su versión anterior. ?6?1 Se eliminó la DLL dependiente de la computadora. Estas operaciones suelen denominarse conflictos de DLL. Si no se aplica la compatibilidad con versiones anteriores, es posible que el programa no se ejecute correctamente. La siguiente tabla describe los cambios introducidos en Microsoft Windows 2000 y versiones posteriores de los sistemas operativos Windows para ayudar a minimizar los problemas de dependencia: Protección de archivos de Windows En la protección de archivos de Windows, el sistema operativo bloquea las actualizaciones no autorizadas del agente o elimina las DLL del sistema. Por lo tanto, Protección de archivos de Windows buscará una firma digital válida cuando una operación de instalación de un programa intente eliminar o actualizar una DLL definida como una DLL del sistema. ?6?1 DLL privada Una DLL privada protege un programa de los cambios realizados en una DLL compartida. Las DLL privadas utilizan información específica de la versión o un archivo .local vacío para imponer la versión de la DLL utilizada por el programa. Para utilizar una DLL privada, busque la DLL en la carpeta raíz del programa. Luego, para programas nuevos, agregue información específica de la versión a la DLL. Para programas más antiguos, utilice un archivo .local vacío. Cada método le dice al sistema operativo que use una DLL privada ubicada en la carpeta raíz del programa.