2010-01-14 47 views
22

在我遍历我的代码时,在窗体的构造函数中,调用了以相同形式声明的方法。在我进入方法之前,我得到一个System.IO.FileNotFoundException异常,并显示消息“无法找到指定的模块(异常来自HRESULT:0x8007007E)”。我尝试输入的成员方法被声明为不安全的,因为它处理非托管C++代码,但正如我所说,我永远无法进入该方法。找不到指定的模块0x8007007E

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

发生此问题的原因有哪些?任何想法,我可能会缺少什么,或者我该如何调试这个问题?

回答

15

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

什么方法,你不能步入做什么,它使用什么类型/方法?

+0

优秀的答案,这似乎是问题所在。有一个类试图从一个托管的C++ DLL使用,它期望它在发布文件夹中,但它不在那里。旁边的问题,当我点击进入这个疯狂的目录C:\ [PROFILE] \ LOCALS〜1 \ Temp \ 3292 $ [DLLNAME] $ v2.0.50727 \ [CLASS_NAME]和成员签名都在那里。我会+1你,因为这比谷歌给我更好,但没有代表。 – insipid

+4

+1因为我现在可以做到这一点:) – insipid

15

你是在profiling模式运行dependency walker,还是只是静态分析?性能分析模式是您所需要的,我认为。但我相信有更好的解决方案。您可以尝试SysInternals ProcMon。这可以让你看到它至少要加载哪个文件,然后你可以找出问题所在。

我的建议是打开它,然后关闭日志。到达异常即将发生的地步,重新启用日志记录,在调试器中跳过,以便生成错误,然后再次禁用日志记录。这会让你只有少量的日志需要处理,否则它会很快变得相当难以处理。

+0

当试图运行一个混合模式程序集,在调试中编译到新安装的机器上时,遇到了同样的问题。我确实成功地使用了ProcMon来找出我需要运行时库的DEBUG版本。 –

+5

我已经写了关于使用ProcessMonitor来混淆混合模式程序集依赖项问题,这里http://www.sivachandran.in/2013/03/troubleshooting-module-could-not-be.html,我希望它有帮助。 – Sivachandran

相关问题