¿Por qué REGSVR32 no encuentra una DLL que esté claramente allí?


8

Estoy instalando una aplicación personalizada en un nuevo Windows 2003 Server. Es necesario agregar y registrar un par de archivos DLL, y los he copiado al servidor en la carpeta C: \ WINDOWS \ System32, que es donde siempre han estado cuando la aplicación se ejecutaba en Windows NT y 2000 .

Sin embargo, cuando intento registrarlos usando:

regsvr32 c: \ windows \ system32 \ nameoflibrary.dll

Devuelve:

LoadLibrary("c:\windows\system32\nameoflibrary.dll") failed - 
The specified module could not be found.

Sin embargo, la DLL está ahí. Puedo verlo. Si copio la ruta al Explorador de Windows e intento ejecutarla, me dice que no puedo ejecutar una DLL, así que sé que está allí. Una complicación menor es que las DLL se crearon en VB5, pero el tiempo de ejecución de VB5 está instalado en el servidor, por lo que esto no debería ser un problema.

¿Algunas ideas?


¿Es este un servidor Windows 2003 de 64 bits?
jscott

No, es de 32 bits.
Cyberherbalist

Respuestas:


6

Podría ser que falta un módulo dependiente. Debe mirar el código getlasterror para determinar por qué no se encontró el módulo.


Sí. No se instaló un módulo que se suponía que debía instalar la aplicación principal. Una vez que esto se corrigió, las dos DLL se registraron correctamente.
Cyberherbalist

7

Jim B. probablemente tenga razón. Obtenga DependencyWalker y cargue {nameoflibrary.dll}: le mostrará qué DLL dependiente falta.


El método actualizado es usar dumpbin.exe del directorio bin de Visual Studio:dumpbin /dependents <file.exe/dll>
hLk
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.