当我使用“regsvr32 foo.dll”时,我得到一个“指定的模块不能 发现“错误。
由于regsvr32无法找到,导致错误 该文件,即使它是当前文件夹。
我已经指定了完整路径,但它仍然无法正常工作。任何想法????
答案 0 :(得分:11)
如果foo.dll
对bar.dll
具有依赖性并且实际上bar.dll
无法找到,则会发生这种情况。
尝试使用MSVC中的depends.exe
检查foo.dll
的依赖关系,看看是否有任何遗漏。
另一种选择是下载并运行FileMon。然后再次运行regsvr32
,查看找不到的文件/模块。这绝对应该追踪它。
答案 1 :(得分:2)
在64位操作系统上,Dependency Walker对我没有任何意义;并且FileMon
已被Process Monitor取代(请参阅https://docs.microsoft.com/en-us/sysinternals/downloads/procmon下载该实用程序)。以下是我使用Process Monitor找到缺少的引用的方法:
从工具栏或菜单中打开过滤器对话框。
将Process Name
regsvr32.exe
添加到过滤器列表中,然后移除所有PID
过滤器。
清除列表,......
...打开捕捉,如果它还没有打开。
从控制台窗口运行regsvr32.exe
命令。完成后,您可能希望关闭捕获。
在regsvr32
加载DLL之后查找缺少的引用。
答案 2 :(得分:0)
就我而言,当 DLL(实际上是传统的 VB OCX)在 SYSTEM32 中时,REGSVR32 声称“找不到文件...”。将它们移动到另一个目录后 REGSVR32 成功。