【发布时间】:2012-01-25 02:48:30
【问题描述】:
我正在查看对我来说是新的代码。我在一个名为 UI 的项目中有 c++ 代码,它具有许多依赖项,可以正确构建并且不会返回任何错误。在 Visual Studio 2008 中的相同解决方案中,我创建了一个新的 C# windows 窗体项目并添加了对 UI 项目生成的 dll 的引用,并添加了“使用”语句。我想要做的是引发在 UI 项目中定义的对话框之一,所以我有类似的代码
UIDialog uIDialog = new UIDialog();
uIDialog.Show();
构建。
当我在调试中运行我的项目时,当它进入“新”部分时,我得到了上面的异常 - 没有关于缺少的模块是什么的信息。
有没有什么方法可以在不深入 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 位的。
【问题讨论】:
-
该异常消息中应该包含堆栈跟踪。发布这可能会让我们更接近找出问题所在。此外,仅查看您提供的内容,我会冒昧地推测这是 32 位与 64 位的问题。是否有可能将一个程序集编译为 32 位而另一个程序集编译为 64 位/任何 CPU? 32位代码不能调用64位代码,反之亦然。
-
我同意@Cody。听起来像是平台目标问题。异常通常包含更多信息,因此将 exception.ToString() 的结果发布到您的问题应该有助于诊断问题。
-
我不想说出显而易见的事实,但是
UIDialog.h在第 61 行说了什么? -
Startup() - 所以我猜 JIT 正在那里加载需要的东西,但没有告诉我它是什么。
标签: c# c++ visual-studio-2008 dll module