在VS2012中编译WinXP兼容的程序
VS2012默认是不兼容Windows XP的,编译链接出来的程序只能在Windows Vista及以上版本的操作系统上运行。可是有时需要在Windows XP上运行,又不得不用VS2012(例如用了C++11的<thread>等等)。这时,就犯愁了。没关系,这个问题可以搞定。
首先,你的VS2012必须升级到Update 3,否则无法编译出WinXP兼容的程序。
在VS2012集成开发环境中
编译工程时,在VS2012左侧的“解决方案管理器”是单击右键,在右键菜单中单击“属性”,然后在“配置属性”->“常规”的选项中找到“平台工具集”,在下拉菜单中选中“Visual Studio 2012 - Windows XP (v110_xp)”选项,单击“确定”即可。

在命令提示符中
那么,如果我是在命令行中编译呢?没关系,把这个“Visual Studio 2012 - Windows XP (v110_xp)”选项的命令行参数查出来就行。
编译参数: /D _USING_V110_SDK71
console子系统链接参数: /SUBSYSTEM:CONSOLE,"5.01"
windows子系统链接参数: /SUBSYSTEM:WINDOWS,"5.01"
知道了这三个参数就行了。
例如编译boost库
在tools\build\v2\engine\build.jam文件中,找到-subsystem console,出现两次,全部改成-subsystem console,"5.01"
然后在tools\build\v2\tools\msvc.jam文件中,在# 8.0 and above adds some more options.之后加上这一行:
toolset.flags $(toolset).compile DEFINES : _USING_V110_SDK71_
再找到这两行:
toolset.flags msvc LINKFLAGS <user-interface>console : /subsystem:console ;
toolset.flags msvc LINKFLAGS <user-interface>gui : /subsystem:windows ;
把/subsystem:console改成/subsystem:console,"5.01",并把/subsystem:windows改成/subsystem:windows,"5.01",就可以开始编译了。
例如编译Qt库
在qtbase\mkspecs\win32-msvc2012\qmake.conf文件中找到这两行:
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS
把QMAKE_LFLAGS_CONSOLE参数中的/SUBSYSTEM:CONSOLE参数改成/SUBSYSTEM:CONSOLE,"5.01",把QMAKE_LFLAGS_WINDOWS中的/SUBSYSTEM:WINDOWS参数改成/SUBSYSTEM:WINDOWS,"5.01"。
然后再找这两行
QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
在QMAKE_CFLAGS和QMAKE_CXXFLAGS中都加上/D _USING_V110_SDK71然后就可以开始编译Qt库了。
在VS2012中编译WinXP兼容的程序的更多相关文章
- 在 Sublime Text 2 中编译和运行 Java 程序,以及输出中文出错问题解决办法
Sublime Text 2 是我最喜欢用来编码的文本编辑器,如果你尝试使用后相信你也会喜欢上它的.在这篇文章中我们将讨论如何在 Sublime Text 2 中编译和运行 Java 程序. 第一步: ...
- vs2012中编译时出现程序集所使用的版本高于所引用的版本
我在运行别人的项目时出现版本不兼容的问题:
- 在Windows命令行中编译运行C/C++程序
此处运行环境是在Windos下,运行cmd命令进入DOS界面 现在有一段简单C++代码(文件名为 demo.cpp),用于计算a*b的值 #include<iostream> using ...
- VS2008中编译运行MFC应用程序时,出现无法启动程序,因为计算机中丢失mfc90ud.dll的解决方案
解决方法:"工具"->"选项"->"项目和解决方案"->"VC++目录",在可执行文件栏中加上如 ...
- VS2012中出现“无法启动程序...debug\abc.exe,系统找不到指定文件”的问题!
VS 2005在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifest file)(.manifest后缀文件)(其本质上是XML文档,你可以用文本编辑器打 ...
- Vs2012(Vs2013) 编译 64位 Qt (动态库), 并使用自编译Qt建立工程(悲催经历)。(含遗留问题)
仅供参考. 体会:我个人此次编译不该使用Vs2013编译Qt. 使用以下程序: Qt : qt-opensource-windows-x86-msvc2012_64_opengl-5.2.1.exe ...
- 在VS2012中采用C++中调用DLL中的函数 (4)
这两天因为需要用到VS2012来生成一个DLL代码,但是之前并没有用过DLL相关的内容,从昨天开始尝试调试DLL的文件调用,起初笔者在网络上找到了3片采用VSXXX版本进行调试的例子,相关的内容见本人 ...
- 如何在KEIL中编写模块化的C程序
在KEIL中的模块化程序写法在使用KEIL的时候,我们习惯上在一个.c的文件中把自己要写的东西按照自己思路的顺序进行顺序书写.这样是很普遍的写法,当程序比较短的时候比如几十行或者一百多行,是没有什么问 ...
- 甘果移动老甘:移动互联网变迁中的App和小程序
2018 年 10 月13 日,由又拍云和知晓云联合主办的 Open Talk 丨2018 小程序开发者沙龙系列活动广州站拉开帷幕,甘果移动的 CEO 路文杰(老甘)在沙龙上做了<移动互联网变迁 ...
随机推荐
- MySQL数据库学习笔记(二)----MySQL数据类型
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- View (二) 自定义属性 自定义属性的格式详解
自定义属性格式一共有十种: 1. reference:参考某一资源ID. 2. color:颜色值. 3. boolean:布尔值. 4. dimension:尺寸值. 5. float:浮点值. 6 ...
- Volley(三)—— ImageRequest & Request简介
Volley(三)—— ImageRequest & Request简介 上 篇文章我们讲 到了如何用volley进行简单的网络请求,我们可以很容易的接受到string.JsonObjec类型 ...
- [资料]Nginx做IP访问限制以及正则规则
nginx配置location总结及rewrite规则写法 Nginx Location配置总结 Nginx 禁止某个IP访问 server { listen 443; root /webroot/; ...
- C++构造函数与析构函数
转自http://blog.csdn.net/tqtuuuu/article/details/6652144 构造函数 对于C++的构造函数,暂且将其分为以下几类: 1. 默认构造函数 2. 隐士转换 ...
- C语言 链表的创建--打印--逆置--新增--删除--排序--释放
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string. ...
- U3D Debug.log的问题
今天在测试有yield有关的问题时,发现Debug.log()是异步输出机制.不一定会在调用后立即执行. 在C++有类似问题:std::cout 也不一定会立即输出,加上"\n"或 ...
- python数字图像处理(7):图像的形变与缩放
图像的形变与缩放,使用的是skimage的transform模块,函数比较多,功能齐全. 1.改变图片尺寸resize 函数格式为: skimage.transform.resize(image, o ...
- Caffe学习系列(12):训练和测试自己的图片
学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去 ...
- Anaroid WebView 的属性汇总
1. 打开网页时不调用系统浏览器, 而是在本WebView中显示: mWebView.setWebViewClient(new WebViewClient(){ @Override public bo ...