Las DLL (Dynamic Link Library) son librerias de subprogramas que implementan funciones muy utilizadas por los programas. De esta forma no es necesario codificar estas funciones en los programas basta con llamarlas.
Por ello las DLL en general son compartidas por dos o más programas.
En general cualquier rutina o subprograma puede ser llamada o cargada en tiempo de compilación , llamada estática, o en tiempo de ejecución, llamadas dinámica. Esta es la forma en que se llaman las DLL.
Las llamadas estáticas tiene la ventaja de que se incorpora el código en tiempo de compilación de los programas. Si bien se ejecuta más rápido el programa no puede actualizarse el subprograma y el programa resultante es de gran tamaño. Los programas JAVA usan llamadas estáticas con el fin de que se puedan ejecutar en cualquier entorno.
Las llamadas dinámicas tienen el inconveniente de que el programa se ejecuta más lentamente, pero las ventajas de que su tamaño es menor y su actualización más sencilla pues basta con copiar las nuevas DLL en la librería en la que se encuentran.
Por ello las DLL tienen versiones.
Las DLL que usamos en Windows pueden ser de Microsoft o de otros desarrolladores de software.
MANTENIMIENTO
¿Qué versión de una DLL tengo?
Priero debemos de buscar en que carpeta se encuentra con el “Administrador de de Windows”, y después basta con pulsar el botón derecho y seleccionar el menú “Propiedades”.
Hay programas como AUDITDLL (http://www.pcprofile.com/ ) que recorren todo el sistema para crear una base de datos con la información de todas las DLL y su versión.
Falta DLL
Con frecuencia nos aparece el mensaje “DLL not found”, “Missing DLL” o “Falta DLL” cuando vamos a ejecutar una DLL. Esto puede deberse a varios motivos:
- La DLL no se ha instalado por una mala instalación del software
- La DLL estaba instalada pero la desinstalación de un programa la ha borrado.
- La DLL al ir a instalarse ha encontrado una DLL de una versión anterior pero no la ha podido borrar al estar en uso (Un programa para saber que aplicación usa una DLL se puede encontrar en (http://www.codeguru.com/dll/ ).
Para solucionarlo hay que:
- Encontrar la DLL en la Web de Microsoft (http://support.microsoft.com/ ) o en alguna WEB indepediente (http://www.dll-files.com , http://www.relsol.com.au/ , http://www.nomore-missingdll.com/ ).
- Descargar la WEB
- Descomprimir la WEB
- Copiarla sobre \windows\system , si hay una DLL con el mismo nombre conviene copiarla en otra carpeta por si hay que tirar a atrás el cambio.
FAQ para los archivos de DLL ¿Qué los archivos de DLL son?? DLL representa la Biblioteca del Eslabón Dinámica. Incluye muchas funciones usadas por las aplicaciones de Windows. Se envía por una aplicación cuando usted ejecuta el app. ¿Para qué archivos de DLL exista?? El propósito principal es disminuir el tamaño del archivo de aplicaciones. Un archivo de DLL se envía por mucho apps y proporciona algunas funciones a ellos. ¿En qué directorio los archivos de DLL necesitan para existir?? DLL archiva necesita existir en \ directorio del windows\system o el directorio que la aplicación existe. Los archivos de DLL podrían ser visibles si usted cambia la opción de 'el Explorador de Windows' gusta 'la Vista' -> 'la Opción' -> 'Muestre todos los archivos. Muéstreme el ejemplo de una función Suponga que nosotros usamos C++ para desarrollar una aplicación y usar una función gusta 'MessageBox () 'que es llamar una ventana para dar un mensaje en él. En ese caso, el app no tiene la entidad de la función en sí mismo. Él sólo tiene el nombre de archivo de DLL (user32.dll). Por consiguiente, si el archivo de DLL no existe en el directorio apropiado, los app pueden tener el problema. Si usted necesita los archivos de DLL Si usted intenta usar una aplicación en mi página web, por favor transmita los archivos de DLL de los "archivos de DLL" la categoría. Si usted intenta usar el app de algún otro tipo, por favor avise a la persona que el app pertenece. Yo no puedo hacer nada para el app de algún otro tipo. La versión diferente de archivos de DLL. Algunos archivos de DLL tienen las únicas versiones. Si es diferente, los app pueden tener el problema. La versión podría cambiarse por el fabricante, aunque es muy molesto para los usuarios. Usted necesita tener cuidado de la versión de DLL. Corrija haga clic en el DLL y escoge la "propiedad" para verificarlo. Sobre DLLs en mi página web Desde que yo he estado usando C++ Visual para desarrollar algún apps, aquéllos pueden necesitar algunos archivos de DLL hechos por Microsoft Inc. Los DLLs en mi página web sólo trabajan fino con mi apps y no pueden trabajar con el apps de otro tipo. Eso es porque, cuando yo arriba expresado, los archivos de DLL pueden tener algunas versiones y el mismo nombre no significa los mismos volúmenes en el archivo de DLL.- Reiniciar el sistema
Instalo una DLL y el sistema no la reconoce
Hay que ejecutar el comando de DOS regsvr32
EJEMPLO DE UN PROGRAMA DE ARCHIVOS DLL
#ifndef _DLL_VERSION_H_ #define _DLL_VERSION_H_ #ifndef DLLVERSIONINFO typedef struct _DllVersionInfo { DWORD cbSize; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; DWORD dwPlatformID; }DLLVERSIONINFO; #endif #ifndef DLLGETVERSIONPROC typedef int (FAR WINAPI *DLLGETVERSIONPROC) (DLLVERSIONINFO *); #endif class CDLLVersion { typedef enum { WIN_DIR, // Windows directory (e.g.: "C:\Windows\") SYS_DIR, // Windows system directory (e.g.: "C:\Windows\System") CUR_DIR, // Current directory (e.g.: ".") NO_DIR} // No directory (path in file name) FileLocationType; // Possible ways to add a path prefix to a file public: CDLLVersion (LPSTR szDLLFileName) : m_dwMajor (0), m_dwMinor (0), m_dwBuild (0) { m_bValid = GetDLLVersion (szDLLFileName, m_dwMajor, m_dwMinor, m_dwBuild); } virtual ~CDLLVersion () {}; DWORD GetMajorVersion () { return m_dwMajor;