C++/CLI/C# 加载表单时出现 BadImageFormat 异常

4
我创建了一个C++/CLI程序集,它可以在本地C++代码周围创建一个包装器。当我将其作为资源添加到我的C#项目中时,该资源可以编译并成功加载程序集。我可以从应用程序中访问对象和智能提示,但是在尝试构建时,会出现以下异常:

BadImageFormat

无法加载文件或程序集 'MyCLI, Version=1.0.3680.28432, Culture=neutral, PublicKeyToken=null' 或其中的一个依赖项。尝试加载格式不正确的程序。

我在窗体加载事件中加载它:

MyCLI.myCLI z;

当我编译时,C#中我的主构造函数在这一行崩溃了。

Application.Run(new Form1());

有人知道是什么原因导致了这个异常吗?

谢谢。

1个回答

9

您正在尝试在64位操作系统上运行此代码。您的C#代码将被编译成64位机器代码。但是,当它尝试加载32位C++/CLI程序集时,您会遇到问题。

在C#项目中,使用“项目+属性”,应用程序选项卡,平台目标=x86。也可以创建64位版本的C++/CLI程序集,使用“生成+配置管理器”。使用平台目标是更好的解决方案。


我完全确定现在你指出了它--然而,我无法让我的C++/CLI项目显示除Win32以外的任何内容,我的C#项目也禁用了平台目标下拉菜单。另请注意,我正在使用64位操作系统。 - George Johnston
禁用了?那太奇怪了。您可以使用Corflags.exe来执行相同的操作。重新运行VS安装程序以获取64位C/C++编译器,它不是默认安装的。 - Hans Passant
如果您想将一个C++项目编译为x64,您需要阅读一些文章,比如这篇文章:http://msdn.microsoft.com/en-us/library/h2k70f3s(VS.80).aspx - Lex Li
在 Visual Studio 2008 中,平台目标位于“生成”选项卡上,请确保更改选项卡本身上的目标,而不是顶部的配置目标。 - lfalin

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