zoukankan      html  css  js  c++  java
  • 在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)”选项,单击“确定”即可。

    VS2012 Update 3 的工程属性界面

    在命令提示符中

      那么,如果我是在命令行中编译呢?没关系,把这个“Visual Studio 2012 - Windows XP (v110_xp)”选项的命令行参数查出来就行。

    编译参数:                 /D _USING_V110_SDK71
    console子系统链接参数:    /SUBSYSTEM:CONSOLE,"5.01"
    windows子系统链接参数:    /SUBSYSTEM:WINDOWS,"5.01"

    知道了这三个参数就行了。

    例如编译boost库

    在toolsuildv2engineuild.jam文件中,找到-subsystem console,出现两次,全部改成-subsystem console,"5.01"

    然后在toolsuildv2 oolsmsvc.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库

    在qtbasemkspecswin32-msvc2012qmake.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库了。

  • 相关阅读:
    【周年庆】china-pub 14周年庆感恩回馈四波狂热来袭
    《Python自然语言处理》
    《大教堂与集市》
    《Redis设计与实现》
    《处理器虚拟化技术》
    《Erlang程序设计(第2版)》
    《数据化管理:洞悉零售及电子商务运营》
    《MySQL Workbench数据建模与开发》
    angular中的MVVM模式
    JavaScript函数柯里化
  • 原文地址:https://www.cnblogs.com/yejianfei/p/3416125.html
Copyright © 2011-2022 走看看