在VS2012中编译WinXP兼容的程序
2015-01-04 19:16
267 查看
VS2012默认是不兼容Windows XP的,编译链接出来的程序只能在Windows Vista及以上版本的操作系统上运行。可是有时需要在Windows XP上运行,又不得不用VS2012(例如用了C++11的<thread>等等)。这时,就犯愁了。没关系,这个问题可以搞定。
首先,你的VS2012必须升级到Update 3,否则无法编译出WinXP兼容的程序。
编译工程时,在VS2012左侧的“解决方案管理器”是单击右键,在右键菜单中单击“属性”,然后在“配置属性”->“常规”的选项中找到“平台工具集”,在下拉菜单中选中“Visual Studio 2012 - Windows XP (v110_xp)”选项,单击“确定”即可。
那么,如果我是在命令行中编译呢?没关系,把这个“Visual Studio 2012 - Windows XP (v110_xp)”选项的命令行参数查出来就行。
知道了这三个参数就行了。
在tools\build\v2\engine\build.jam文件中,找到-subsystem console,出现两次,全部改成-subsystem console,"5.01"
然后在tools\build\v2\tools\msvc.jam文件中,在
再找到这两行:
把/subsystem:console改成/subsystem:console,"5.01",并把/subsystem:windows改成/subsystem:windows,"5.01",就可以开始编译了。
在qtbase\mkspecs\win32-msvc2012\qmake.conf文件中找到这两行:
把QMAKE_LFLAGS_CONSOLE参数中的/SUBSYSTEM:CONSOLE参数改成/SUBSYSTEM:CONSOLE,"5.01",把QMAKE_LFLAGS_WINDOWS中的/SUBSYSTEM:WINDOWS参数改成/SUBSYSTEM:WINDOWS,"5.01"。
然后再找这两行
在QMAKE_CFLAGS和QMAKE_CXXFLAGS中都加上/D _USING_V110_SDK71然后就可以开始编译Qt库了。
来源:http://www.cnblogs.com/yejianfei/p/3416125.html
首先,你的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库了。
来源:http://www.cnblogs.com/yejianfei/p/3416125.html
相关文章推荐
- 在VS2012中编译WinXP兼容的程序
- VS2012编译可在WinXP兼容程序
- 在VS2012中编译WinXP兼容的程序
- 在VS2012中编译WinXP兼容的程序
- 在VS2012中编译WinXP兼容的程序
- 在VS2012中编译WinXP兼容的程序
- 在WinXP上运行VS2012编译的C++程序
- VS2012编译兼容XP程序的方法
- VS2012 编译程序时报无法加载PDB文件错误解决方案
- [C/C++] VC2012编译的程序在WinXP下报告“指定的可执行文件不是有效的 Win32 应用程序”错误
- VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”
- GCC 64位程序的makefile条件编译心得——32位版与64位版、debug版与release版(兼容MinGW、TDM-GCC)
- vs2012编译生成的程序在xp系统中显示不是有效的win32程序解决方法
- vs2012编译的程序在XP下运行提示无法定位输入点XXXXX到kernel32.dll
- win7 sp1下编译使用了ado的程序,在winxp下无法连接数据库
- VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”
- 解决VS2012(update3)静态编译的Qt5.1.1程序无法运行的问题
- Visual C++ 2012编译的程序在WINXP上不能运行
- 现在为了让程序兼容vista,我们需要给程序加上一个manifest文件,可是有时候vc6它就会弹出Resource Compiler Error RC2170 的错误,可能是vc6一个bug,我个人对vc6还是很喜欢的,不过经常会有编译死掉或出错的问题,
- VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”