Почему бы REGSVR32 не найти DLL, которая явно там?


8

Я устанавливаю пользовательское приложение на новый Windows 2003 Server. Необходимо добавить и зарегистрировать пару библиотек DLL, и я скопировал их на сервер в папку C: \ WINDOWS \ System32 - именно там они всегда были, когда у нас было приложение, работающее в Windows NT и 2000 ,

Тем не менее, когда я пытаюсь зарегистрировать их с помощью:

regsvr32 c: \ windows \ system32 \ nameoflibrary.dll

Это возвращает:

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

DLL, однако, прямо там. Я вижу его. Если я копирую путь в Windows Explorer и пытаюсь его запустить, он говорит мне, что я не могу запустить DLL, поэтому я знаю, что она там есть. Небольшое осложнение заключается в том, что библиотеки DLL были встроены в VB5, но среда выполнения VB5 установлена ​​на сервере, поэтому это не должно быть проблемой.

Любые идеи?


Это 64-битный сервер Windows 2003?
Jscott

Нет, это 32-битная версия
Киберболист

Ответы:


6

Возможно, отсутствует зависимый модуль. Вам нужно взглянуть на код getlasterror, чтобы определить, почему модуль не был найден.


Ага. Модуль, который должен был быть установлен основным приложением, не был установлен. Как только это было исправлено, две DLL зарегистрированы правильно.
Киберболист

7

Джим Б., наверное, прав. Получите DependencyWalker и загрузите {nameoflibrary.dll} - он покажет вам, какая зависимая DLL отсутствует.


Обновленный метод заключается в использовании dumpbin.exe из каталога bin Visual Studio:dumpbin /dependents <file.exe/dll>
hLk
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.