Perché REGSVR32 non dovrebbe trovare una DLL chiaramente presente?


8

Sto installando un'applicazione personalizzata su un nuovissimo Windows 2003 Server. È necessario aggiungere e registrare un paio di DLL e le ho copiate sul server nella cartella C: \ WINDOWS \ System32 - che è dove sono sempre state quando abbiamo avuto l'applicazione in esecuzione su Windows NT e 2000 .

Tuttavia, quando provo a registrarli usando:

regsvr32 c: \ windows \ system32 \ nameoflibrary.dll

Restituisce:

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

La DLL è comunque proprio lì. Posso vederlo. Se copio il percorso in Windows Explorer e provo a eseguirlo, mi dice che non posso eseguire una DLL, quindi so che è lì. Una piccola complicazione è che le DLL sono state create in VB5, ma il runtime VB5 è installato sul server, quindi questo non dovrebbe essere un problema.

Qualche idea?


È un server Windows 2003 a 64 bit?
jscott,

No, è a 32 bit.
Cyberherbalist,

Risposte:


6

È possibile che manchi un modulo dipendente. È necessario esaminare il codice getlasterror per determinare perché il modulo non è stato trovato.


Sì. Un modulo che doveva essere installato dall'applicazione principale non è stato installato. Una volta corretto, le due DLL sono state registrate correttamente.
Cyberherbalist,

7

Jim B. ha probabilmente ragione. Ottieni DependencyWalker e carica {nameoflibrary.dll}: ti mostrerà quale DLL dipendente è mancante.


Il metodo aggiornato consiste nell'utilizzare dumpbin.exe dalla directory bin di Visual Studio:dumpbin /dependents <file.exe/dll>
hLk
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.