加载表单时 C++/CLI/C# BadImageFormat 异常
我创建了一个 C++/CLI 程序集,它创建了本机 C++ 代码的包装器。当我将其添加为资源时,资源将进行编译,并且程序集可以正常加载到我的 C# 项目中。我可以从应用程序中访问我的对象和智能感知,但是在尝试构建时,它崩溃并出现异常:
BadImageFormat
无法加载文件或程序集 'MyCLI,版本=1.0.3680.28432, 文化=中立,PublicKeyToken=null' 或其依赖项之一。一次尝试 被用来加载一个程序 格式不正确。
我将它加载到我的表单加载事件中:
MyCLI.myCLI z;
... 当我编译时,它在 C# 的主构造函数中的这一行崩溃
Application.Run(new Form1());
有谁知道可能导致此异常的原因吗?
谢谢
I created a C++/CLI assembly that creates a wrapper around native C++ code. The resource compiles and the assembly loads fine into my C# project when I add it as a resource. I can access my objects and intellisense from within my application, but when attempting to build, it crashes with the exception:
BadImageFormat
Could not load file or assembly
'MyCLI, Version=1.0.3680.28432,
Culture=neutral, PublicKeyToken=null'
or one of its dependencies. An attempt
was made to load a program with an
incorrect format.
I load it into my form load event:
MyCLI.myCLI z;
... and when I compile, it crashes on this line in my main constructor in C#
Application.Run(new Form1());
Does anyone have an idea of what could be causing this exception?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正尝试在 64 位操作系统上运行此代码。您的 C# 代码将被很好地编译为 64 位机器代码。但当它尝试加载 32 位 C++/CLI 程序集时,您就会遇到困难。
在 C# 项目中,使用“项目 + 属性”、“应用程序”选项卡、“平台目标”= x86。也可以使用 Build + Configuration Manager 创建 64 位版本的 C++/CLI 程序集。使用 Platform Target 是更好的解决方案。
You are trying to run this code on a 64-bit operating system. Your C# code will get nicely compiled to 64-bit machine code. But you'll hit the wall when it tries to load a 32-bit C++/CLI assembly.
In the C# project, use Project + Properties, Application tab, Platform Target = x86. Creating a 64-bit version of your C++/CLI assembly is possible too, use Build + Configuration Manager. Using Platform Target is the better solution.