在VS2012中編譯WinXP兼容的程序

  VS2012默認是不兼容Windows XP的,編譯連接出來的程序只能在Windows Vista及以上版本的操做系統上運行。但是有時須要在Windows XP上運行,又不得不用VS2012(例如用了C++11的<thread>等等)。這時,就犯愁了。不要緊,這個問題能夠搞定。windows

  首先,你的VS2012必須升級到Update 3,不然沒法編譯出WinXP兼容的程序。工具

在VS2012集成開發環境中

  編譯工程時,在VS2012左側的「解決方案管理器」是單擊右鍵,在右鍵菜單中單擊「屬性」,而後在「配置屬性」->「常規」的選項中找到「平臺工具集」,在下拉菜單中選中「Visual Studio 2012 - Windows XP (v110_xp)」選項,單擊「肯定」便可。ui

VS2012 Update 3 的工程屬性界面

 

 

在命令提示符中

  那麼,若是我是在命令行中編譯呢?不要緊,把這個「Visual Studio 2012 - Windows XP (v110_xp)」選項的命令行參數查出來就行。spa

編譯參數:                 /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.以後加上這一行:code

toolset.flags $(toolset).compile DEFINES :  _USING_V110_SDK71_

再找到這兩行:blog

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文件中找到這兩行:qt

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庫了。

相關文章
相關標籤/搜索