为什么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资源管理器并尝试运行它,它会告诉我无法运行DLL,所以我知道它在那里。一个小的复杂之处是DLL是在VB5中内置的-但是VB5运行时已安装在服务器上,因此这应该不是问题。

有任何想法吗?


这是64位Windows 2003服务器吗?
jscott 2011年

不,它是32位。
Cyber​​herbalist 2011年

Answers:


6

可能是缺少依赖模块。您需要查看getlasterror代码以确定为什么找不到该模块。


是的 本应由主应用程序安装的模块未安装。更正此错误后,两个DLL将正确注册。
Cyber​​herbalist 2011年

7

Jim B.可能是正确的。获取DependencyWalker并加载{nameoflibrary.dll}-它会向您显示缺少哪个依赖的DLL。


更新的方法是使用Visual Studio bin目录中的dumpbin /dependents <file.exe/dll>
dumpbin.exe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.