【问题标题】:Regsvr32 fails to find the dll in the current folderRegsvr32 无法在当前文件夹中找到 dll
【发布时间】:2010-11-15 00:49:14
【问题描述】:

当我使用“regsvr32 foo.dll”时,我得到一个“指定的模块不能 发现”错误。

这个错误是因为 regsvr32 找不到 文件,即使它是当前文件夹。

我已经指定了完整路径,但它仍然不起作用。有什么想法吗????

【问题讨论】:

    标签: windows com regsvr32


    【解决方案1】:

    如果foo.dll 依赖于bar.dll 并且实际上找不到bar.dll,则会发生这种情况。

    尝试使用 MSVC 中的 depends.exe 来检查 foo.dll 的依赖关系,看看是否缺少。

    另一种选择是下载并运行FileMon。然后再次运行regsvr32 并查看它找不到哪个文件/模块。这绝对应该追查到它。

    【讨论】:

      【解决方案2】:

      在 64 位操作系统上,Dependency Walker 对我来说没有任何信息;并且FileMon 已被进程监视器取代(请参阅https://docs.microsoft.com/en-us/sysinternals/downloads/procmon 以下载该实用程序)。以下是我如何使用 Process Monitor 找到丢失的引用:

      从工具栏或菜单中打开过滤器对话框。

      regsvr32.exe 中的Process Name 添加到过滤器列表并删除所有PID 过滤器。

      清空列表,...

      ...打开捕获(如果尚未打开)。

      从控制台窗口运行regsvr32.exe 命令。完成后,您可能需要关闭捕获。

      regsvr32 加载您的 DLL 后查找缺少的引用。

      【讨论】:

        【解决方案3】:

        在我的情况下,当 DLL(实际上是旧版 VB OCX)在 SYSTEM32 中时,REGSVR32 声称“未找到文件...”。将它们移动到另一个目录后,REGSVR32 成功。

        【讨论】:

          【解决方案4】:

          在某些版本的 Windows10 中,由 SYSWOW64\REGSVR32 注册的文件必须驻留在 SYSWOW64

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-11-15
            • 1970-01-01
            • 1970-01-01
            • 2011-03-15
            • 2023-03-09
            • 2017-11-18
            • 1970-01-01
            • 2012-04-10
            相关资源
            最近更新 更多