当我使用“regsvr32 foo.dll”时,我收到“找不到指定的模块”错误。
导致错误是因为 regsvr32 无法找到该文件,即使它是当前文件夹。
我已经指定了完整路径,但它仍然不起作用。有任何想法吗????
如果foo.dll
有依赖项,则可能会发生这种情况bar.dll
,但实际上bar.dll
找不到。
尝试使用depends.exe
MSVC 来检查依赖项foo.dll
并查看是否缺少任何依赖项。
另一种选择是下载并运行FileMon。然后regsvr32
再次运行并查看它找不到哪个文件/模块。这绝对应该追踪它。
在 64 位操作系统上,Dependency Walker 对我来说没有任何信息。并FileMon
已被进程监视器取代(请参阅https://docs.microsoft.com/en-us/sysinternals/downloads/procmon以下载该实用程序)。以下是我如何使用 Process Monitor 找到丢失的引用:
从工具栏或菜单打开过滤器对话框。
Process Name
将的添加regsvr32.exe
到过滤器列表并删除所有PID
过滤器。
清空名单,...
...打开捕获,如果它尚未打开。
regsvr32.exe
从控制台窗口运行您的命令。完成后,您可能想要关闭捕获。
regsvr32
加载 DLL后查找缺少的引用。
在我的情况下,当 DLL(实际上是旧版 VB OCX)在 SYSTEM32 中时,REGSVR32 声称“找不到文件......”。将它们移动到另一个目录后,REGSVR32 成功。
在某些版本的 Windows10 中,要由 SYSWOW64\REGSVR32 注册的文件必须驻留在SYSWOW64中