關于如何從源碼編譯QGIS,請參見《Win10下通過源碼編譯安裝QGIS》。源碼編譯出可執行檔案後,啟動會遇到各種問題。說明如下:
1.開發環境說明
- Qt:5.14.1
- VS:2019
- CMake:3.23.0
- QGIS:3.26.2
- 作業系統:Windows 10
- 調試模式:release版
注意:請不要用debug版本調試,具體原因參見 《Win10下通過源碼編譯安裝QGIS》。
2.問題說明
2.1.Windows Error:找不到指定的子產品
報錯如下:
解決方法:搜尋E:\QGIS\OSGeo4W目錄下的所有的dll及plugins目錄将其放到程式同一個目錄下。
注意:當QGIS.exe啟動起來,可以嘗試将一些不必要的dll删除,如:在release版本下可以删除debug版的Qt相關的dll,反複試,直到所需dll最少。其中上述目錄、庫路徑為Win10下通過源碼編譯安裝QGIS博文編譯安裝之後生成的路徑,請參見該博文并根據自己本機實際路徑更改,下同。
2.2 啟動立馬退出
啟動調試時,程式退出,退出的位置在Qgispython子產品qgspythonutilsimpl.cpp檔案的QgsPythonUtilsImpl類的init()運作到Py_Initialize()行代碼程式崩潰退出。解決方法如下:在path環境變量下,添加變量值為:
添加環境變量PYTHONPATH,變量值如下:
2.3 ImportError:DLL load failed while import QtCore
在2.2節配置好的條件下,在cmd中,敲入python,然後在python的指令行敲入:
from qgis.core import*
彈出如下:
解決方法如下:
安裝QGIS官方的QGIS-OSGeo4W-3.26.2-1.msi,安裝完後将QGIS3.26.2\bin目錄複制并替換E:\QGIS\OSGeo4W\bin,(替換之前請注意備份),并将E:\QGIS\OSGeo4W\bin的protoc.exc拷貝過去。
2.4.ModuleNotFound Error:No Module named 'qgis._core'
報錯如下:
這個問題找了3天,至今沒解決,我感覺同2.3節問題是同一個問題,有知道怎麼解決的,敬請留言,十分感謝,這個問題不解決,主界面彈出如下:
即有個紅色錯誤提示框。
2.5 面闆節點有些沒有
原因是QGIS源碼provider_開頭的插件工程沒有編譯成dll。
2.6 界面有些圖示不顯示
如2.4節圖所示,很多圖示不顯示,解決方法,參見《QGIS.exe圖示不顯示問題》。
2.7 Qt 平台插件未初始化
彈出錯誤如下:
解決方法如下:
将E:\QGIS\OSGeo4W\apps\qt5\plugins\platforms拷貝到qgis.exe同一目錄下。
參考連結:Qgis+python開發環境配置和簡單教程_特快倉鼠的部落格-CSDN部落格_python qgis