Visual Studio 2012 为 XP 编译 - 无效 win32 - v110_xp

Posted

技术标签:

【中文标题】Visual Studio 2012 为 XP 编译 - 无效 win32 - v110_xp【英文标题】:Visual Studio 2012 compile for XP - not valid win32 - v110_xp 【发布时间】:2014-05-05 06:09:38 【问题描述】:

我有 Visual Studio 2012 更新 4 和 Windows SDK 7.1。

我选择“Visual Studio 2012 - Windows XP (v110_xp)”工具包,并将包含目录更改为使用 $(WindowsSdkDir_71A)。

编译时没有报错(如成功找到winres.h),但是当我尝试在Windows XP SP3上运行exe时,仍然报错:“test.exe不是有效的Win32应用程序。”

对于测试,它只是一个 C++ hello world。

#include <cstdio>

int main(void)

    printf("Hello, World!\r\n");
    return 0;

如何使用 Visual Studio 2012 为 XP 编译?

我应该检查什么才能使其正常工作?

如何在命令行上测试编译? 我目前正在用这个在命令行上进行测试,它仍然给出了无效的 win32 错误:

"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.exe" /EHsc /MT /I"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include" /I"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include" main.cpp /link /LIBPATH:"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib" 

更新: 如果我将这些说明用于命令行,它会起作用: http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx

如果我把这些设置放到我的系统环境变量中,我也可以让msbuild和visual studio编译成功,但这并不理想。

【问题讨论】:

您的 XP 系统上有 MS VS Distribuable 吗? 这可能出错的方法很少,你可能只是复制了错误的EXE。项目 + 属性、链接器、系统、最低要求版本是重要的设置。 XP 必须是 5.01。 最低要求版本为 5.01。 XP 上没有可再发行组件,但它是静态链接的 (/MT),并且可以在 Visual Studio 2010 上运行。它也没有给出缺少的 dll 错误,而是给出了无效的 win32 应用程序错误。 【参考方案1】:

需要更改的设置是 项目属性 -> 配置属性 -> 链接器 -> 系统 -> 子系统

对于适当的项目类型,这需要设置为 CONSOLE 或 WINDOWS,但默认情况下不会为“空项目”设置,即使在其他地方设置了控制台与 GUI 并且它似乎可以工作(例如 WinMain 是条目点,控制台没有出现,等等)。最低要求版本也需要为 5.01,但从 link.exe 上的命令行帮助来看,我认为除非设置子系统,否则这不会有任何作用。

检查事项:

Visual Studio 2012 是更新 1 或更高版本 SDK 7.1 已安装且 7.1A 存在 使用了“Visual Studio 2012 - Windows XP (v110_xp)”工具包 预处理器定义包含_USING_V110_SDK71_ VC++ 目录包含 $(WindowsSdkDir_71A)bin、$(WindowsSdkDir_71A)include 和 $(WindowsSdkDir_71A)lib 链接器子系统是控制台或窗口,最低要求版本为 5.01

【讨论】:

我将其设置为 /MT。设置 XP 本地工具。将其设置为 x86。你的步骤终于解决了我的问题。谢谢。在 OOOOOLD xp 服务器上工作需要我编写一些代码。

以上是关于Visual Studio 2012 为 XP 编译 - 无效 win32 - v110_xp的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 2012 编写的程序xp能 运行吗?

Visual Studio 2012支持哪个XP版本【作为目标操作系统】

我可以在 Windows XP 上使用 Visual Studio 2010 远程调试器从 Visual Studio 2012 调试 .Net 4.0 应用程序吗?

Windows XP 上的兼容性和性能 Visual Studio 2012 [关闭]

如何使用适用于 Windows 8 的 Visual Studio Express 2012 创建适用于 Windows XP 的应用程序

无法在 Windows XP 上运行 Visual Studio 2012 程序