windows 下 QT 5 6 靜態編譯

2021-09-13 16:45:59 字數 1710 閱讀 6198

請遵守lgpl協議。

編譯準備:

visual studio 2010

qt5.6.1 source code

google angle source code

directx sdk

編譯的電腦顯示卡比較老opengl版本公升不上去,所以使用angle(google的opengle es轉到directx9d).

1.編譯angle,使用visual studio 2010編譯,因為google使用vs2017了,使用vs2010編譯最新**還是比較麻煩的,所以選乙個歷史分支,這個編譯比較順利注意點就是配置dxsdk的路徑。

2.編譯qt5.6.1**,檢視config的幫助:configure.bat -h。 檢視了一下幫助就選擇了一下自己需要東西:configure.bat  -prefix "e:\program_file

s\qt_5_6_1\5.6\src\ouput" -extprefix "e:\program_files\qt_5_6_1\5.6\src\ouputext

" -debug-and-release -platform win32-msvc2010 -force-debug-info -static -static-

runtime -no-compile-examples -accessibility -opengl es2 -opensource -make libs -

angle -nomake examples -nomake tests -no-openssl

就開始編譯了,遇到第乙個坑就是「gui/opengl/qopengl.h(97):fatal error c1083: 無法開啟包括檔案:「gles2/gl2.h」: no such file or directory」 這時-opengl選項不論選擇什麼:desktop,dynamic,opengl,es2都會報這個錯誤。因為我需要使用es2選擇的是es2,解決的辦法:qtbase\src\3rdparty\angle\include下面的資料夾複製到qtbase\include目錄,繼續編譯(載自:或者configure時用configure  -i 引數指定angle的include目錄,因為是靜態庫沒有涉及到鏈結基本會成功。

5.編譯已經存在qt工程。因為不是新建的工程,直接編譯現有的工程有些lib不會自動更新成編譯出來的lib,這是需要自己新增到工程依賴的lib,qt不像boost那樣編譯時依賴哪些lib會提示出來,qt是直接報錯很多未知符號的錯誤,這個篇blog給了很大幫助:

但是最後乙個鏈結失敗找了很多資料沒有解決:unresolved external symbol qwindowseglstaticcontext * __cdecl qwindowseglstaticcontext::create。於是只能自己解決了,在原始碼裡找到qwindowseglstaticcontext::create的定義在qwindowseglcontext.cpp裡面,找到同級目錄下的debug目錄下沒有qwindowseglcontext.obj檔案,這下可以判斷是這個cpp沒有編譯,開啟原始的makefile檔案裡面包含的全是pri檔案,開啟本路徑下的pri檔案,的確有乙個判斷:contains(qt_config, opengles2) else: contains(qt_config,opengl)

感覺是config的有問題,我明明就是opengles2 既然還是沒有編譯,就是這個判斷寫死後nmake makefile,nmake install,編譯出來qwindows.lib, 回到自己的vs工程編譯一下都過了。

QT5 6 使用QWebEngineView的坑

最近有個專案用到了qt,並且需要展示乙個簡單的網頁,於是使用了 vs2013 qt5.6.3 qwebengineview 程式是64位的,在自己本機測試通過後準備發布,但在放到純淨環境下的win7上時卻在開啟網頁時就崩潰,不開啟的話一切正常。於是在本機測試32位的,發現本機也出問題了,開啟網頁就崩...

Qt5 6跨平台問題

啊,這個問題。最近寫了乙個鬥魚彈幕接收的cpp。其實是官方文件給的大部分,我修改了一小點qaq。想著qt垮了個平台,然後就出了這檔子事。我是在ubuntu 64位下qt5.664 位編譯的成功的能執行。然後放到了win7 64位下的qt5.632位 就出錯。問題如下 d qt qt5.6.1 5.6...

qt5 6的視窗顯示網頁,qwebengine方式

所需要的設定都在之前文章裡面的寫了,qt5.6版本之後沒有qwebkit,只有qwebengine,所需要的是msvc版本的qt,之前文章的鏈結 在.pro配置檔案中配置 qt webenginewidgets然後按構建就是,左下角最後乙個那個小錘子 然後在標頭檔案中新增 h include如果能正...