¿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?

Ciberherbalista
fuente
¿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.

Jim B
fuente
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.

DougN
fuente
El método actualizado es usar dumpbin.exe del directorio bin de Visual Studio:dumpbin /dependents <file.exe/dll>
hLk