2

我在 Visual Studio 2010 Ultimate 中工作,在向我的 Windows 窗体添加某些控件时遇到问题。我在同一个解决方案中有两个项目,PeakEstimator 和 PeakEstimatorUI。PeakEstimatorUI(我的 GUI)依赖于 PeakEstimator(我的后端),并且一切都可以使用我目前拥有的表单和控件按预期编译和运行。

但是,当我尝试添加某些控件时,我现在遇到了问题。文本框、按钮、标签、OpenFileDialog 控件和许多其他东西都可以正常工作,但是当我尝试添加图表、LineShape、OvalShape、ReportViewer、ElementHost 等时,我收到以下错误:

未能创建组件“组件名称”。错误消息如下:'System.BadImageFormatException:尝试加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)'

我一直在寻找类似的问题,我见过的大多数线程都在谈论 x86 与 x64 问题,但我的印象是使用 clr 会为我处理这些事情。也许我在那里有一个根本的误解。

如果我创建一个新的 Windows 窗体项目,我遇到的所有控件似乎都可以正常工作,所以我认为它一定与我的项目配置有关。有任何想法吗?

这是我第一次开发任何类型的严肃的 GUI 或使用 Visual Studio,这是我很长时间以来第一次在 Windows 中编程,所以请像我 5 岁一样解释它。

谢谢你的时间,

戴夫

4

2 回答 2

1

当您尝试将 32 位 DLL 加载到 64 位应用程序时,这通常是一个错误。在您的环境中可能吗?

如果您有外部依赖项并且只有 .DLL 文件,则可以使用 Visual Studio 命令提示符查看它是否为 32 位:corflags myReference.dll. 你正在寻找32BIT国旗。如果它是您可以控制的,请检查项目/解决方案以确保它被设置为构建AnyCPU而不是x86(注意:如果它执行 COM 互操作或使用另一个 32 位程序集,则可能需要 x86)。

如果您在 64 位机器上并且有一个设置为 AnyCPU 构建配置的解决方案并尝试随后加载 32 位程序集,则会引发此异常。您可以将解决方案更改为为 x86 构建,这应该可以解决问题。

更多资源:

于 2012-10-11T19:59:06.390 回答
0

抱歉,我最初的答案是针对 C#。

对于 C++,您需要查看 /CLRIMAGETYPE。这是 MSDN,它解释了它的工作原理以及在 VS2010 中的设置位置:

http://msdn.microsoft.com/en-us/library/31zwwc39(v=vs.100).aspx

这是属性页面的屏幕截图。我不确定要更改为哪个值,但您可以尝试看看什么对您有用。

在此处输入图像描述

于 2012-10-11T20:02:17.027 回答