我正在使用Visual Studio 2010 Ultimate,我在向Windows窗体添加某些控件时遇到问题。我在同一个解决方案中有两个项目,PeakEstimator和PeakEstimatorUI。 PeakEstimatorUI(我的GUI)依赖于PeakEstimator(我的后端),所有内容都按照我目前使用的Form和控件编译和运行。
但是,当我尝试添加某些控件时,我现在遇到了一个问题。 TextBoxes,Buttons,Labels,OpenFileDialog控件以及许多其他工作正常,但是当我尝试添加Chart,LineShape,OvalShape,ReportViewer,ElementHost等时,我收到以下错误:
无法创建组件“组件名称”。错误消息如下:'System.BadImageFormatException:尝试加载格式不正确的程序。 (HRESULT异常:0x8007000B)'
我一直在寻找类似的问题,我见过的大多数主题都讨论过x86与x64问题,但我的印象是使用clr会为我处理这些事情。也许我在那里有一个根本的误解。
如果我创建一个新的Windows窗体项目,我遇到的所有控件似乎都能正常工作,所以我认为它必须与我的项目配置有关。有什么想法吗?
这是我第一次开发任何严肃的GUI或使用Visual Studio,这是我第一次在Windows中编程很长时间,所以请解释一下,就像我5岁一样。 / p>
感谢您的时间,
戴夫
答案 0 :(得分:1)
通常,当您尝试将32位DLL加载到64位应用程序时,这是一个错误。这可能在你的环境中吗?
如果您有外部依赖项并且只有.DLL文件,则可以使用Visual Studio命令提示符查看它是否为32位:corflags myReference.dll
。您正在寻找32BIT
标志。如果它是您可以控制的,请检查项目/解决方案以确保将其设置为AnyCPU
而不是x86
(注意:如果它是COM互操作或使用另一个32-,则可能需要x86位组装)。
如果您使用的是64位计算机且其解决方案设置为AnyCPU构建配置并尝试随后加载32位程序集,则会抛出此异常。您可以更改解决方案以构建x86,这应该可以解决问题。
更多资源:
答案 1 :(得分:0)
抱歉,我最初的回答是针对C#。
对于C ++,您需要查看/ CLRIMAGETYPE。这里是解释它是如何工作的MSDN以及在VS2010中设置它的位置:
http://msdn.microsoft.com/en-us/library/31zwwc39(v=vs.100).aspx
这是属性页面的屏幕截图。我不确定要更改哪个值,但您可以尝试查看哪些值适合您。