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?


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.


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.


Método Atualizado é usar dumpbin.exe do diretório bin Visual Studio:dumpbin /dependents <file.exe/dll>
HLK
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.