Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在调试和发布配置中以完全相同的方式构建的应用程序不会';Win7:BadImageFormatException无法在版本中工作_.net_Configuration_Badimageformatexception - Fatal编程技术网

.net 在调试和发布配置中以完全相同的方式构建的应用程序不会';Win7:BadImageFormatException无法在版本中工作

.net 在调试和发布配置中以完全相同的方式构建的应用程序不会';Win7:BadImageFormatException无法在版本中工作,.net,configuration,badimageformatexception,.net,Configuration,Badimageformatexception,我正在Win7 x64机器上开发一个应用程序 有一些代码可以调用外部.dll文件。.dll是为32位机器构建的。我遇到的问题是,在Debug配置的调试器中运行应用程序时,它工作正常。只要我切换到Release,任何进入方法的条目都会导致.dll调用失败 An unhandled exception of type 'System.BadImageFormatException' occurred in MyCool.exe Additional information: is not a v

我正在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的客户没有问题。诚然,我们没有运行xpx64的客户,因此我无法验证这一点

以下是我的解决方案配置的图像:

我已将
平台:
选项更改为所有可能的组合,但它仍然不起作用。
Debug
配置中是否有隐藏的东西

编辑:我知道了,但我真的不理解这个问题

在项目属性中的每个项目的
Build
选项卡(
Compile
tab用于VB项目)中,我必须将
Target CPU
设置为x86,而不是AnyCPU


也许这是另一个问题,但是:为什么?在每个项目的基础上,将整个解决方案的平台设置为x86与将目标CPU设置为x86有什么区别。另外,在上图中:
Platform
字段的用途是什么呢?

这是因为任何CPU都将以64位运行,但您的DLL可能被编译为32位DLL。不能从64位可执行文件交叉调用32位DLL


在将应用程序设置为x86时,这将强制将其编译(并运行)为32位应用程序。

是的,这与平台设置无关。名称(x86)和AnyCPU都不相关。只有“项目+属性”、“生成”选项卡中的设置才重要。。。。。。所以那么平台做什么呢?什么都没有。它只对C++项目很重要。如果这是一个大问题,它会影响所使用的编译器和链接器。NET编译器是平台无关的,因为MSIL是。这是难以置信的误导,但我想这是有道理的。。。