如何编译32位(我的操作系统是64位) - 错误exe不是一个有效的Win32应用程序

时间:2013-01-31 19:04:09

标签: c# visual-studio visual-studio-2012 x86 32-bit

标题显示我正在使用VS 2012在64位计算机上编译C#app。我希望程序可以在32位计算机上运行。

目前我在网上找到的唯一帮助是: 菜单>构建与GT;结构> Active Solution Platform默认为任何CPU,我尝试过,但没有在32位机器上工作(除非我做错了)

尝试在已检查构建的平台x86的调试配置中添加新的

在32位计算机上编译并运行应用程序获取错误A.exe不是有效的Win32应用程序。

我的上述内容类似于此处所做的:Link to Stack Overflow Similar Question

更新1: 目标操作系统是WinXP SP3,但我们不相信它有.NET 4.5。我将测试是否在.NET 4.0中编译早期版本的应用程序将解决问题并解决问题。问题可能不是错误消息显示的内容。

5 个答案:

答案 0 :(得分:6)

将项目设置为目标AnyCPU应该允许它在32位计算机上运行,​​前提是您没有使用加载64位本机代码的库。如果您有任何依赖项,则还需要确保使用这些依赖项的AnyCPU或32位版本。此外,请确保在32位计算机上安装了正确的.NET Framework(默认情况下为.NET 4.5,如果您将VS 2012与新项目一起使用)。

请注意,VS 2012中新项目的默认值为AnyCPU,并选中了Prefer 32 Bit选项。这将使它始终作为32位应用程序运行,即使在64位操作系统上也是如此。


请注意,由于您的朋友正在运行XP sp3,因此无法使用.NET 4.5。 Windows XP不支持.NET 4.5。您需要将应用程序更改为目标.NET 4.0,然后将在XP计算机上运行(如果他安装了4.0框架)。

答案 1 :(得分:3)

该错误是Win32错误ERROR_BAD_EXE_FORMAT。它是由加载器生成的,当您尝试在32位操作系统上运行64位进程时会发生这种情况。还有其他方法可以查看该错误,但这是它在.exe文件上发生的最常见原因。

要编译32位进程,您需要在项目配置中定位x86。另一种选择是针对AnyCPU。这将导致在32位OS上执行时的32位进程,以及在64位操作系统上执行时的64位进程。看来您的构建目标是x64。

答案 2 :(得分:1)

平台名称(显示在属性顶部,页面“Build”)只是一个名称。配置编辑器中的“Active Solution Platform”也是如此。这有点令人困惑。

您必须确保“目标平台”设置确实设置为“AnyCPU”或“x86”。

答案 3 :(得分:1)

我有同样的问题。我喋喋不休。而我和我找到了解决方案。 解决方案是:

首先选择平台目标“ x86 ”。之后,将项目构建为“发布模式”,而不是“调试模式”。最后,您可以在任何平台(32位或64位)上运行。

答案 4 :(得分:0)

如果上述解决方案均无法帮助您,请尝试以下操作: 打开项目属性,然后单击左列中的“常规”。 将平台工具集更改为包含Windows XP的工具集。

例如,在Visual Studio 2015中,它将默认设置为" Visual Studio 2015(v140)"。为了能够在Windows XP上运行,您必须将其更改为" Visual Studio 2015 - Windows XP(v140_xp)"。

现在进行完全重建,exe应该适用于Windows XP。