Pourquoi REGSVR32 ne trouverait-il pas une DLL qui est clairement là?


8

J'installe une application personnalisée sur un tout nouveau serveur Windows 2003. Quelques DLL doivent être ajoutées et enregistrées, et je les ai copiées sur le serveur dans le dossier C: \ WINDOWS \ System32 - où elles se trouvent toujours lorsque l'application a été exécutée sur Windows NT et 2000 .

Cependant, lorsque j'essaie de les enregistrer en utilisant:

regsvr32 c: \ windows \ system32 \ nameoflibrary.dll

Il redonne:

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

La DLL est cependant là. Je peux le voir. Si je copie le chemin d'accès à l'Explorateur Windows et tente de l'exécuter, il m'indique que je ne peux pas exécuter une DLL, donc je sais qu'elle est là. Une complication mineure est que les DLL ont été construites dans VB5 - mais le runtime VB5 est installé sur le serveur, donc cela ne devrait pas être un problème.

Des idées?


S'agit-il d'un serveur Windows 2003 64 bits?
jscott

Non, c'est 32 bits.
Cyberherbalist

Réponses:


6

Il se peut qu'un module dépendant soit manquant. Vous devez regarder le code getlasterror pour déterminer pourquoi le module n'a pas été trouvé.


Oui. Un module qui devait être installé par l'application principale n'a pas été installé. Une fois cela corrigé, les deux DLL se sont inscrites correctement.
Cyberherbalist

7

Jim B. a probablement raison. Obtenez DependencyWalker et chargez {nameoflibrary.dll} - il vous montrera quelle DLL dépendante est manquante.


La méthode mise à jour consiste à utiliser dumpbin.exe à partir du répertoire bin de Visual Studio:dumpbin /dependents <file.exe/dll>
hLk
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.