系统.IO.FileNotFoundException未处理消息=“找不到指定的模块。(HRESULT异常: 0x8007007E)”

3

我正在查看一个对我而言是新的代码。我在一个名为UI的项目中有C++代码,它具有许多依赖项,可以正确构建并且不返回任何错误。在Visual Studio 2008的同一解决方案中,我创建了一个新的C# Windows窗体项目,并添加了对由UI项目生成的dll的引用,并添加了一个"using"语句。我的目标是调用在UI项目中定义的对话框之一,因此我的代码类似于:

UIDialog uIDialog = new UIDialog(); 
uIDialog.Show();

该项目正在构建中。

当我以调试模式运行我的项目时,在到达“new”部分时,我会得到上面提到的异常——但没有关于缺少模块的信息。

有没有办法找出缺少的模块是什么,而不必在 UI 项目中深入挖掘代码?

(我正在尝试重新表述这个问题,以避免被关闭。如果有人能给出“不,没有”的明确答案,那将非常有帮助。感谢那些关闭先前版本的人。)

编辑:

System.IO.FileNotFoundException occurred
  Message="The specified module could not be found. 
(Exception from HRESULT: 0x8007007E)"
  Source="ui"
  StackTrace:
   at ui.UIDialog.Startup()
   at ui.UIDialog..ctor() in c:\..\ui\UIDialog.h:line 61
InnerException:

这就是问题所在,没有任何明显的有用信息!

这不是32/64位的问题 - 在到达这里之前,我遇到了典型的“BadImageFormatException”,所以为了解决这个问题,我强制将所有内容都设置成了32位。


1
该异常信息应该包含调用堆栈。如果您能提供该堆栈信息,我们可能会更接近于找出问题所在。此外,仅凭您提供的信息,我猜测这可能是32位与64位之间的问题。有没有可能其中一个程序集是针对32位编译的,而另一个是针对64位/任意CPU编译的呢?32位代码无法调用64位代码,反之亦然。 - Cody Gray
我同意 @Cody 的观点。听起来像是平台目标问题。异常通常会携带更多信息,因此将 exception.ToString() 的结果发布到您的问题中应该有助于诊断问题。 - Paul Alexander
我不想说废话,但是UIDialog.h的第61行说了什么? - Gabe
Startup() - 所以我猜JIT正在加载一些需要的东西,但没有告诉我是什么。 - Melanie
2个回答

1
你可以在所引用的dll上使用MSIL反汇编器,并检查dll的清单以获取所有依赖项。该反汇编器是Windows SDK工具的一部分。 或者,总有DependencyWalker,尽管我已经好几年没用过了。

手动检查所有依赖项是我试图避免的(虽然最终还是这样做了)。谢谢! - Melanie

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接