【问题标题】:the specified module could not be found 0x8007007E找不到指定的模块 0x8007007E
【发布时间】:2011-01-05 04:32:06
【问题描述】:

当我单步执行我的代码时,在表单的构造函数中,会调用以相同表单声明的方法。在我可以进入该方法之前,我收到一个 System.IO.FileNotFoundException 消息“找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)”。我尝试进入的成员方法被声明为不安全,因为它处理非托管 C++ 代码,但就像我说的那样,我永远无法进入该方法。

因为这听起来像是一个 DLL 依赖问题,所以我运行了 Dependency Walker。 Dependency walker 仅显示 SHLWAPI.DLL 下 MPR.DLL 的问题。问题方法是我从未调用过的 WNetRestoreConnectionA。依赖遍历器常见问题解答表明这不是问题http://dependencywalker.com/faq.html。此外,这不是 Web 应用程序或任何东西。不幸的是,我被 VS2005 困住了。

出现此问题的一些可能原因是什么?关于我可能缺少什么或如何调试此问题的任何想法?

【问题讨论】:

    标签: c# .net c++ windows visual-studio


    【解决方案1】:

    您是在分析模式下运行依赖遍历器,还是只是静态分析?我认为分析模式是你需要的。但我相信还有更好的解决方案。

    你可以试试SysInternals ProcMon。这将使您至少可以看到它正在尝试加载的文件,并且从那里您可能能够找出问题所在。

    我的建议是启动它,然后关闭日志记录。到达即将发生异常的位置,重新启用日志记录,进入调试器以生成错误,然后再次禁用日志记录。这将使您只需要处理少量日志,否则它会很快变得非常笨拙。

    【讨论】:

    • 我在尝试在新安装的机器上运行在调试中编译的混合模式程序集时遇到了同样的问题。我确实成功地使用了 ProcMon 来确定我需要运行时库的 DEBUG 版本。
    • 我在这里写过关于使用 ProcessMonitor 解决混合模式程序集依赖问题的博客sivachandran.in/2013/03/…,希望对您有所帮助。
    • 使用这种方法,诀窍是为文件查找QueryOpen 操作流,从而导致NAME NOT FOUND
    【解决方案2】:

    当 .Net 运行时 JIT 对您将要进入的方法进行 JIT 时发生错误,因为它找不到该方法使用的类型之一。

    你无法踏入的方法具体是做什么的,它使用了哪些类型/方法?

    【讨论】:

    • 很好的答案,这似乎是问题所在。它试图从托管的 c++ dll 中使用一个类,它期望在发布文件夹中,但它不存在。附带问题,当我单击类上的转到定义时,我怎么会转到这个疯狂的目录 C:[PROFILE]\LOCALS~1\Temp\3292$[DLLNAME]$v2.0.50727[CLASS_NAME] 和成员签名都是那里。我会 +1 你,因为这比谷歌给我的更好,但没有代表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    相关资源
    最近更新 更多