0

我有一个需要在 Windows XP 上使用的控制台应用程序。我也使用 MSVC 2012 作为 IDE。问题,当我在 Win XP (SP3) 上运行它时,我收到错误消息,指出此应用程序不是有效的 win32 应用程序。

升级版:

在讨论了对这个问题的评论中的建议之后,我更新了我的问题。

什么使用我的应用程序:

  • urlmon.h/urlmon.lib
  • boost::program_options
  • c++11的正则表达式

我已经尝试过的:

  • 构建像“Hello, World!”这样的测试应用程序。它适用于目标 Win XP
  • 为 MSVC 2012 安装更新 3 和更新 3 redist。到目标机器
  • 使用静态链接 (/MT) 构建应用程序

Dependency walker 显示 3 条消息:

  • 缺少 WER.dll
  • 缺少 IESHIMS.dll
  • 未解析的 C 函数“WNetRestoreConnectionA”

据我所见,依赖walker中列出的任何内容都不会影响我的应用程序,但它仍然无法加载错误“不是有效的win32应用程序”。

有谁知道为什么>

4

2 回答 2

1

v110_xp 工具集自动指定 SUBSYSTEM 的 MRV(“5.1”(WindowsXP)),但不指定 SUBSYSTEM

这就是问题所在。我在项目设置中将 SUBSYSTEM 设置为“/SUBSYSTEM:CONSOLE”,目标 Win XP 的问题消失了。感谢大家的评论。

于 2013-10-04T10:22:43.690 回答
0

据我所知,MSVC 2012 工具集不支持 Windows XP。但是您可以在 IDE 2012 中使用 MSVC 2010 工具集。或者使用 Visual Studio 2012 Update 1 中的工具集 v110_xp(我没有尝试过)。

此链接可能会有所帮助

http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx?Redirected=true

于 2013-10-03T11:21:15.030 回答