【问题标题】:Compiling a program for Windows XP x86为 Windows XP x86 编译程序
【发布时间】:2013-03-10 23:44:37
【问题描述】:

我在 Windows 8 计算机 (x64) 上使用 VS2012 编写了一个 Windows 窗体应用程序,我希望它在 Windows XP x86 上运行。当我尝试运行该程序时,我收到错误“...不是有效的 Windows 32 应用程序”。 我该如何解决?

【问题讨论】:

  • 为 x86 配置构建程序

标签: c# visual-studio build x86


【解决方案1】:
  • 在解决方案资源管理器上右键单击项目名称。
  • 选择属性
  • 选择构建选项卡
  • 为平台目标 DropDownList 选择 x86 选项
  • 保存并构建项目

同时确保您的 .Net Framework 版本与测试机中的版本相同。

如果你正在构建 C++ 项目,那么试试这个:

常规 -> 平台工具集 -> Visual Studio 2012 -> Windows XP (v110_xp)

【讨论】:

  • 如果是c#项目呢?
【解决方案2】:

最好选择目标为 Any CPU 。

当您选择 Any CPU 选项时,编译器将决定如何调用程序(x86 或 x64),同时选择 Any CPU 平台。

【讨论】:

  • 怎么样?我从来没有遇到过这个问题。
  • @AthomSfere 本机依赖项,​​没有 64 位等效项。在这种情况下它显然会起作用(OP 已经让它作为 x64 运行),但这更多的是例外而不是规则。即便如此,这很像一次编写两个程序,其中代码必须相同,并且您必须尽最大努力使两个场景中的语义等效。只有留在托管部分内才容易。
  • @harold 是的,我明白你现在的意思了。是的,如果你留在 C# 和 .NET 中没有问题,但是一旦你离开那些非常安全的框架,你当然需要更加明确和小心
【解决方案3】:

鉴于信息较少,可能猜测很远。

您应该将编译目标从

更改为 x86
Project->Application Properties->Compile 

Set Target CPU to x86

【讨论】:

    【解决方案4】:

    听起来您可能遇到了与 Visual Studio 2012 中针对 C++ 的 Windows XP 目标相关的问题。Visual Studio 2012 Update 1 中添加了对带有 C++ 目标的 Windows XP 的支持,但仍必须在项目属性中明确选择.

    Windows XP Targeting with C++ in Visual Studio 2012

    上面的链接中有大量附加信息,但您在 C++ 项目属性中寻找的具体设置是常规 → 平台工具集 → Visual Studio 2012 - Windows XP (v110_xp)

    【讨论】:

    • +1 afaik 这是问题的核心解决方案(没有这个它肯定行不通,无论你选择 x86 还是 AnyCPU),让我想知道为什么没有人早点支持这个?跨度>
    • 我遇到了类似的问题,除了项目是 c# 而不是 c++,我刚刚安装了更新,此更改是否也适用于我的项目?
    • 不,这仅适用于 C++。您面向的 .NET Framework 版本决定了与 Windows XP 的兼容性。 .NET 4.0 适用于 XP SP3,.NET 3.5 适用于 XP SP2,而 .NET 2.0 适用于任何版本的 Windows XP。 .NET 4.5 需要 Windows Vista 或更高版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2014-04-13
    相关资源
    最近更新 更多