VS2012发布到XP平台

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2012发布到XP平台相关的知识,希望对你有一定的参考价值。

默认情况下,你的VS2012工程发布后,在XP下运行会出现提示“not a valid win32 application”。 

微软推出了Visual Studio 2012 update 1可以支持发布到XP平台,这个更新好像只能在线安装,比较麻烦.

然而就算你打了补丁,你的程序在XP下可能还会出现

“无法定位程序输入点 FlushProcessWriteBuffers 于动态链接库 KERNEL32.dll 上”

这样的错误提示。见http://bbs.csdn.net/topics/390313776

这是因为要把工程发布为静态库才能具有“跨平台”的属性。

安装完毕Visual Studio 2012 update 1后,对工程做如下设置(笔者以MFC程序为例说明):

1.【配置属性】-【常规】-【平台工具集】,选择“Visual Studio 2012 (v110 XP)”(不打补丁没有该选项)。

2.【配置属性】-【常规】-【使用MFC】,选择“Use MFC in a Static Library”(非MFC程序可无视)。

3.【配置属性】-【C/C++】-【代码生成】-【基本运行时库】,

根据你的当前工程属性Debug还是Release来选择“Multi-threaded Debug (/MTd)”或者“Multi-threaded (/MT)”。

要了解更多基本运行时库的知识,参见

http://www.cnblogs.com/eddyshn/archive/2009/11/23/1608823.html

4.将你的工程中依赖的所有外部库,都按照步骤1~3重新编译

注意第四步很重要。如果你只完成了前三步,编译工程发现一大堆link错误,那就是你第四步没有做完整的原因了。

一个项目使用的库中如果存在不同版本的基本运行时库,必然导致冲突。

如果你用到的第三方库没有源码,而且又不是用MTD或MT编译的,很可能你就悲剧了。

参考资料:

http://www.cnbeta.com/articles/194853.htm

http://blog.163.com/f_jinyi/blog/static/311803152009112935449972/

http://blog.csdn.net/lsldd/article/details/8821063

以上是关于VS2012发布到XP平台的主要内容,如果未能解决你的问题,请参考以下文章

VS2012编译的MFC程序XP运行出错R6010

让用VS2012/VS2013编写的程序在XP中顺利执行

VS2013 "v120_xp" 默认作为平台工具集

在以 Windows XP 为目标平台的 VS 2015 中推荐啥

用于 xp 平台程序的 visual basic .net 程序正在 Windows 7 上构建

Visual Studio让用VS2012/VS2013编写的程序在XP中顺利运行(转)