QT5.7.0在win10下使用visual studio 2015編譯(目標平台 xp)

來源:互聯網
上載者:User

標籤:

環境:win10+vs2015+QT5.7.0

目標:編譯出能在windows xp上啟動並執行QT

通過baidu和bing找不出來的結果沒有一個能成功運行,大部分都能編譯成功,並完美解決“exe不是有效win32程式”,但是程式依舊沒法正常顯示視窗。

此時會有一個crash,具體位置是qwindows.dll,但是使用depends查看也沒看出來qwindows.dll有問題,有些人會遇到qwindows.dll依賴的

kernel32.dll在xp下沒有對應介面,具體介面不記得了,最後看到是QT5.5的問題,已經被修複了。

反覆嘗試http://www.cnblogs.com/bbxx111/p/5461069.html這個文章中的辦法,整整3次編譯,依舊不行,期間改過qt-build。bat指令碼裡面的SET CL=/D_USING_V140_SDK71_;%CL%,按照文章的bat始終會有“__useHeader”重複定義的警告,作為軟體開發,我是受不了此類警告的,按照官方的doc(http://doc.qt.io/qt-5/windows-issues.html),修改bat警告依舊,最後整合stackoverflow和qt的論壇經驗編譯成功。

最後的編譯方法如下:

修改%QTDIR%\qtbase\qmake\Makefile.win32,在CFLAGS_BARE後加入-D_USING_V110_SDK71_修改%QTDIR%\qtbase\mkspecs\common\msvc-desktop.conf,在DEFINES中加入_USING_V110_SDK71_;修改QMAKE_LFLAGS_CONSOLE    = /SUBSYSTEM:CONSOLE,5.01修改QMAKE_LFLAGS_WINDOWS    = /SUBSYSTEM:WINDOWS,5.01QTDIR是QT源碼的目錄。qt-build.bat如下:REM Set up \Microsoft Visual Studio 2015, where <arch> is amd64, x86, etc.CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86REM ********** Update include & lib to support xp win sdk 7.1A **********SET PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%SET INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%SET LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;%LIB%SET CL=/D_USING_V110_SDK71_;%CL%REM ********** 3rd party build tools binaries: ruby, perl, python ********** SET PATH=C:\Ruby23-x64\bin;C:\Perl64\bin;C:\Python27;%PATH%REM ********** Set up qt source env **********SET _ROOT=C:\Qt\qt-everywhere-opensource-src-5.7.0SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%REM Uncomment the below line when using a git checkout of the source repositoryREM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%SET QMAKESPEC=win32-msvc2015set _ROOT=REM Generate makefileconfigure.bat -mp -confirm-license -opensource -platform win32-msvc2015 -developer-build 
-shared -target xp -prefix D:\Qt5.7.0-shared-win32-vs2015-xp -qt-sql-sqlite -qt-sql-odbc
-plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop
-qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtquickcontrols
-skip qtquickcontrols2 -skip qtsensors -no-directwrite

為了排版好看,最後的配置加入了換行,如果需要複製的請注意去掉換行,避免編譯異常。

剩下的就是執行nmake,大概2個小時左右,編譯完成後執行nmake install進行安裝,上面指令碼裡配置的安裝路徑是D:\Qt5.7.0-shared-win32-vs2015-xp。

上面的方法可能存在冗餘的東西,項目追得緊,先解決項目後再來仔細推敲和完善。

對於這個方法需要說明的2點:

1、vs2012之後需要編譯能在xp上啟動並執行程式必須且只能定義宏_USING_V110_SDK71_,有些人會說V110不是要跟著vs的版本走嗎?如果你去嘗試解決__useHeader宏重定義時就會發現,vs2015裡的標頭檔裡面判斷的也是_USING_V110_SDK71_。

2、configure配置指令碼裡面關鍵點是-target xp和-no-directwrite,第一個是配置目標平台為xp,第二個是windows字型渲染的方式。傳送口在這裡:https://msdn.microsoft.com/zh-cn/library/windows/apps/dd368038.aspx,文中明確指出directwrite必須windows 7以上的平台。

directwrite的配置要感謝https://forum.qt.io/topic/62162/qt-5-6-doesn-t-compatible-with-windows-xp/12的問題答案。

參考文獻:

1、http://www.cnblogs.com/bbxx111/p/5461069.html

2、http://doc.qt.io/qt-5/windows-issues.html

3、https://forum.qt.io/topic/62162/qt-5-6-doesn-t-compatible-with-windows-xp/12

4、https://msdn.microsoft.com/zh-cn/library/windows/apps/dd368038.aspx

5、http://www.qtcn.org/bbs/read-htm-tid-56157.html

                                                                                            

QT5.7.0在win10下使用visual studio 2015編譯(目標平台 xp)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.