Por que o REGSVR32 não encontrou uma DLL claramente presente?

8

Estou instalando um aplicativo personalizado em um novo Windows 2003 Server. Algumas DLLs precisam ser adicionadas e registradas, e eu as copiei no servidor na pasta C: \ WINDOWS \ System32 - que é onde elas sempre estiveram quando o aplicativo estava sendo executado no Windows NT e 2000 .

No entanto, quando tento registrá-los usando:

regsvr32 c: \ windows \ system32 \ nameoflibrary.dll

Devolve:

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

A DLL está no entanto ali. Eu posso ver isso. Se eu copiar o caminho para o Windows Explorer e tentar executá-lo, ele informa que não consigo executar uma DLL, então sei que ela está lá. Uma pequena complicação é que as DLLs foram criadas no VB5 - mas o tempo de execução do VB5 está instalado no servidor, portanto, isso não deve ser um problema.

Alguma ideia?

Cyberherbalist
fonte
Este é um servidor Windows 2003 de 64 bits?
Jscott
Não, é de 32 bits.
Cyberherbalist

Respostas:

6

Pode ser que um módulo dependente esteja ausente. Você precisa examinar o código getlasterror para determinar por que o módulo não foi encontrado.

Jim B
fonte
Sim. Um módulo que deveria ser instalado pelo aplicativo principal não foi instalado. Depois que isso foi corrigido, as duas DLLs foram registradas corretamente.
Cyberherbalist
7

Jim B. provavelmente está correto. Obtenha o DependencyWalker e carregue {nameoflibrary.dll} - ele mostrará qual DLL dependente está ausente.

DougN
fonte
Método Atualizado é usar dumpbin.exe do diretório bin Visual Studio:dumpbin /dependents <file.exe/dll>
HLK