【发布时间】:2015-02-19 18:36:25
【问题描述】:
我正在 Win7 x64 机器上开发应用程序。
有一些代码可以调用外部 .dll 文件。 .dll 是为 32 位机器构建的。我遇到的问题是在调试器中以Debug 配置运行应用程序时,它工作正常。一旦我切换到Release,任何进入进行 .dll 调用的方法的条目都会失败,并显示
An unhandled exception of type 'System.BadImageFormatException' occurred in MyCool.exe
Additional information: is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)
Release 和 Debug 的配置相同,并且正在为 x86 构建应用程序。此问题仅发生在 Windows 7 机器上。我们的客户运行 XP 没有问题。诚然,我们没有运行 XP x64 的客户,因此我无法验证这一点。
这是我的解决方案配置的图片:
我已将 Platform: 选项更改为所有可能的组合,但它仍然无法正常工作。 Debug 配置是否有一些隐藏的东西?
编辑:我想通了,但我真的不明白这个问题。
在项目属性中每个项目的Build 选项卡(VB 项目的Compile 选项卡)我必须将Target CPU 设置为x86 而不是AnyCPU。
也许这是另一个问题,但是:为什么?将整个解决方案的平台设置为 x86 和在每个项目的基础上将目标 CPU 设置为 x86 之间有什么区别。另外,在上图中:那么Platform 字段的用途是什么??
【问题讨论】:
-
是的,与平台设置无关。名称 (x86) 和 AnyCPU 都不相关。只有 Project + Properties, Build 选项卡中的设置很重要。
-
..... 那么......平台会做什么呢?
-
没什么。它只对 C++ 项目很重要。当它很重要时,它会影响所使用的编译器和链接器。 .NET 编译器与平台无关,因为 MSIL 是。
-
这令人难以置信的误导,但我想这是有道理的......
标签: .net configuration badimageformatexception