¿Qué son los archivos DLL y por qué falta uno en mi PC?

wdi_top

Cuando recibe un error que dice que Windows no pudo encontrar un archivo DLL en particular, puede ser muy tentador descargar el archivo desde uno de los muchos sitios DLL que existen. He aquí por qué no debería hacerlo.

¿Qué son las DLL?

Antes de comenzar a explicar por qué no debe descargar archivos de biblioteca de vínculos dinámicos (DLL) de Internet, primero echemos un vistazo a qué son los archivos DLL. Un archivo DLL es una biblioteca que contiene un conjunto de código y datos para llevar a cabo una actividad particular en Windows. Las aplicaciones pueden invocar esos archivos DLLcuando necesitan que se realice esa actividad. Los archivos DLL son muy parecidos a los archivos ejecutables (EXE), excepto que los archivos DLL no se pueden ejecutar directamente en Windows. En otras palabras, no puede hacer doble clic en un archivo DLL para ejecutarlo de la misma manera que lo haría con un archivo EXE. En cambio, los archivos DLL están diseñados para ser utilizados por otras aplicaciones. De hecho, están diseñados para ser utilizados por varias aplicaciones a la vez. La parte de «enlace» del nombre de la DLL también sugiere otro aspecto importante. Se pueden vincular varias DLL entre sí, de modo que cuando se llama a una DLL, también se llaman varias otras DLL al mismo tiempo.

wdi_1

El propio Windows hace un uso extensivo de las DLL, como C:\Windows\System32puede indicarle un recorrido por la carpeta. Como ejemplo de lo que estamos hablando, consideremos el archivo de sistema de Windows «comdlg32.dll». Este archivo, también conocido como Biblioteca de cuadros de diálogo común, contiene código y datos para crear muchos de los cuadros de diálogo comunes que ve en Windows: cuadros de diálogo para cosas como abrir archivos, imprimir documentos, etc. Las instrucciones en esta DLL manejan todo, desde recibir e interpretar mensajes destinados al cuadro de diálogo hasta especificar cómo se ve el cuadro de diálogo en su pantalla. Obviamente, varias aplicaciones pueden llamar a esta DLL al mismo tiempo; de lo contrario, no podría abrir un cuadro de diálogo (como el que se muestra a continuación) en más de una aplicación a la vez.

wdi_3

Los archivos DLL permiten modular y reutilizar el código, lo que significa que los desarrolladores no tienen que perder tiempo escribiendo código desde cero para realizar funciones mundanas o comunes. Y aunque los desarrolladores crearán sus propias DLL para instalarlas con sus aplicaciones, la gran mayoría de las DLL llamadas por las aplicaciones en realidad están empaquetadas con Windows o con paquetes adicionales, como Microsoft .NET Framework o Microsoft C ++ Redistributables . La otra gran ventaja de modularizar el código de esta manera es que las actualizaciones son más fáciles de aplicar a cada DLL en lugar de a una aplicación completa, especialmente cuando esas DLL no provienen del desarrollador de la aplicación. Por ejemplo, cuando Microsoft actualiza ciertas DLL en su .NET Framework, todas las aplicaciones que usan esas DLL pueden aprovechar inmediatamente la seguridad o funcionalidad actualizada.

Los archivos DLL descargados pueden estar desactualizados

Entonces, con un poco de comprensión de las DLL en nuestro haber, ¿por qué no descargarlas de Internet cuando falta una en su sistema?

El problema más común con el que se encontrará con las DLL descargadas es que están desactualizadas. Muchos de los sitios de DLL que existen obtienen sus DLL simplemente cargándolos desde sus propias computadoras o las de sus usuarios. Probablemente ya pueda ver el problema. La mayoría de estos sitios solo quieren su tráfico, y una vez que se carga una DLL, tienen pocos incentivos para asegurarse de que el archivo se mantenga actualizado. Agregue a esto que los proveedores no suelen lanzar archivos DLL actualizados al público como archivos individuales, y puede ver que incluso los sitios que  intentan mantener los archivos actualizados probablemente no tengan mucho éxito.

También existe el problema adicional de que las DLL suelen estar integradas en paquetes. Una actualización de una DLL en un paquete a menudo va acompañada de actualizaciones de otras DLL relacionadas en el mismo paquete, lo que significa que incluso en el caso poco probable de que obtenga un archivo DLL actualizado, no obtendrá archivos relacionados que también tengan sido actualizado.

Los archivos DLL descargados pueden infectarse

Aunque es menos común, un problema potencialmente mucho peor es que las DLL que descarga de fuentes distintas del proveedor a veces pueden estar cargadas con virus u otro malware que puede infectar su PC. Esto es particularmente cierto en los sitios que no son demasiado cuidadosos acerca de dónde obtienen sus archivos. Y no es que esos sitios vayan a hacer todo lo posible para informarle sobre sus fuentes de riesgo. La parte realmente aterradora es que si descarga un archivo DLL infectado, corre el riesgo, por la propia naturaleza de los archivos DLL, de darle a ese archivo un acceso más profundo del que podría obtener un archivo infectado normal.

wdi_2

La buena noticia aquí es que una buena aplicación antivirus en tiempo real generalmente puede detectar estos archivos DLL infectados antes de que se guarden en su sistema y evitar que causen daños. Aún así, debe recordar que incluso un buen programa antivirus puede no brindarle una protección perfecta. Si tiene el hábito de descargar archivos peligrosos, es probable que lo alcance en algún momento. Es mejor evitar estos sitios DLL.

Probablemente no resolverán su problema de todos modos

Si bien es posible que solo un archivo DLL en su PC se haya corrompido o eliminado, es más probable que otras DLL o archivos de aplicaciones relacionados también estén dañados o falten. La razón por la que recibe un error sobre un archivo en particular es que es el primer error que encuentra una aplicación antes de fallar y simplemente no se le notifica del resto. Esto puede ser cierto sin importar la causa del problema.

¿Por qué las DLL pueden desaparecer o dañarse? Puede ser que otra aplicación errónea o actualización haya intentado reemplazar el archivo y haya fallado, o lo haya reemplazado con una copia desactualizada. Puede ser una falla en la instalación de su aplicación principal o en un paquete como .NET. Incluso puede ser que tenga otro problema, como sectores defectuosos en su disco duro , que impidan que el archivo se cargue correctamente.

¿Cómo puedo solucionar mi error de DLL?

La única forma de asegurarse de obtener una DLL estable, actualizada y limpia es obtenerla a través de la fuente desde la que se originó. Normalmente, esa fuente será:

  • Su medio de instalación de Windows . Es poco probable que pueda simplemente copiar un archivo DLL desde su medio de instalación, pero tiene una opción rápida para probar antes de hacer algo tan drástico como reinstalar Windows. Puede utilizar la herramienta Protección de recursos de Windows (a menudo denominada verificador de archivos del sistema o SFC), que buscará y solucionará los archivos del sistema dañados o faltantes en Windows. Debe tener su medio de instalación a mano cuando ejecute la herramienta, en caso de que necesite copiar un archivo desde allí. (Si no tiene un disco de instalación, puede descargar uno aquí ).
  • Los paquetes de Microsoft .NET Framework . Varias versiones de .NET se instalan automáticamente junto con Windows, y muchas aplicaciones también instalan archivos de esos paquetes. Puede leer nuestro artículo sobre .NET Framework , que también tiene algunos consejos para encontrar y reparar problemas asociados.
  • Varios paquetes redistribuibles de Microsoft Visual C ++ . Dependiendo de las aplicaciones que utilice, es posible que tenga varias versiones de C ++ Redistributable instaladas en su PC. A veces puede ser difícil determinar cuál es el culpable, pero un buen lugar para comenzar es nuestro artículo sobre C ++ Redistribuibles , que también presenta varios pasos de solución de problemas y enlaces donde puede descargar las versiones más actualizadas directamente desde Microsoft.
  • La aplicación con la que vino la DLL . Si la DLL se instaló junto con una aplicación en lugar de ser parte de un paquete separado, lo mejor que puede hacer es reinstalar la aplicación. Algunas aplicaciones le permiten realizar una reparación en lugar de una reinstalación completa. Cualquiera de las opciones debería funcionar, ya que una reparación generalmente busca archivos faltantes en las carpetas de instalación.

Si todo eso falla, es posible que pueda comunicarse con el proveedor de la aplicación y solicitar una copia de un archivo DLL individual. Algunas empresas están abiertas a esta solicitud; algunos no lo son. Si se encuentra con una empresa que no le proporcionará archivos individuales, al menos pueden ofrecerle otras sugerencias para resolver su problema.