在Windows XP上使用VS 2012编译MFC程序

7
我在Windows 7上安装了VS 2012。我想构建一个可以在Windows XP上运行的MFC程序。但是,当我将exe文件移动到Windows XP时,收到以下错误:“不是有效的Win32应用程序”。
在网上搜索后,我发现我应该安装Visual Studio 2012 Update 1,并将平台工具集从“Visual Studio 2012(v110)”更改为“Visual Studio 2012 - Windows XP(v110_xp)”。我还将目标机器更改为“MachineX86(/ MACHINE:X86)”。这次,在Windows XP上运行exe文件时,我收到另一个错误:“动态库KERNEL32.dll中找不到initializecriticalsection过程入口点”。
现在我不知道该怎么办:(。如果有人能帮助我,我会非常感激:)。
请注意,我尝试了一个简单的对话框MFC程序,没有添加任何代码。

当您尝试简单的MFC项目时,它是否成功或失败? - Captain Obvlious
我甚至不知道你可以在2012年中定向XP。我猜更新是根据大众需求授予的。你提到“请注意,我尝试了一个简单的对话框MFC程序,没有添加任何代码。”然后...什么也没有。结果是什么,还是我们应该假设它是一样的? - WhozCraig
如果在未来,请勿链接到二进制文件下载。如果必须提供链接,则应链接到描述、源代码或下载页面。 - Captain Obvlious
3
请确保你的系统已经安装了XP SP3,然后只需将工具箱设置为v110_xp即可。我曾经用VS2012构建了一个更加复杂的应用程序,并通过切换这个选项实现了针对XP的目标。效果非常好。不过,VC++博客上的一些人遇到了一些问题,请参阅评论:http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx 请注意最后一条评论,由Daniel提到了关于/SUBSYSTEM:WINDOWS,5.01的问题。同时,请确保客户机器上安装了正确的可再发行包。(Update 1 和 Update 2是有区别的,必须与VS2012安装的版本相同。) - ta.speot.is
对于这些操作系统,支持的版本是 Windows XP x86 的 Service Pack 3 (SP3),Windows XP x64 的 Service Pack 2 (SP2),以及 Windows Server 2003 x86 和 x64 的 Service Pack 2 (SP2)。MSDN 关于服务包的引用。 - Roman R.
1
ta.speot.is:我有Windows XP Service Pack 3版本2002。但仍然存在同样的问题。我也已经将我的Visual Studio 2012更新到最新版本,但仍然无法工作。 - shervin
1个回答

2
这是Visual Studio 2012 Update 2中的一个错误。链接提供了Update 2的解决方法(尽管是社区提供的),微软公司表示:

发布者Microsoft于2013年6月5日16:16发布

是的,这在Update 3中已经修复了。

因此,您最好回滚到Update 1或等待Update 3。

编辑Visual Studio 2012 Update 3 Release Candidate已发布,具有“go-live”许可证。警告:

支持声明: Visual Studio 2012 Update 3 RC 和 Team Foundation Server 2012 with Update 3 RC 已经可以在生产环境中使用。这意味着客户可以使用这些版本。但是,这些仍然是预发布版,因此可能存在一些错误,在最终发布之前将进行修复。从 Update 3 RC 升级到 Update 3 RTM 受到支持。为了升级到未来的版本,客户必须先从 Update 3 RC 升级到 Update 3 RTM。 更多信息请点击这里。 编辑2:结果发现回滚到Update 1会破坏Visual Studio...

尽管更新3 RC版,仍然存在相同的问题。 - tofutim
@tofutim 看一下第一个链接。看看simdoc的评论和YLzhou的解决方法。可能有帮助,也可能没有。 - ta.speot.is

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接