天天看點

Qt Qt Quick QML 打包釋出程式出現缺少dll,窗體空白,點選後無反應等釋出不成功的終極解決方法

       在釋出 Qt 應用或 QML(Qt Quick)應用時經常出現缺少各種dll插件,窗體空白,點選程式沒有反應或者程式運作時圖檔等其它資源加載不正常等問題,尋找程式依賴的檔案是一個極其麻煩的事情,是以可以采用以下終極方法。

  1. 建立一個空白檔案夾,作為最終釋出程式的檔案夾
  2. 在 Qt Creator 中生成 release 版本的exe檔案,将app.exe拷貝到釋出檔案夾
  3. 将編寫程式用到的第三方dll(可檢視pro檔案)、圖檔、文本(是否用到了某些絕對路徑的資源)等檔案拷貝到釋出檔案夾
  4. 将 Qt 安裝目錄下的bin檔案夾 (C:\Qt\Qt5.10.0\5.10.0\msvc2015_64\bin\)下所有的全部dll檔案拷貝到釋出檔案夾
  5. 将 Qt 安裝目錄下plugins 檔案夾 (C:\Qt\Qt5.10.0\5.10.0\msvc2015_64\plugins\)下的全部子檔案夾拷貝到釋出檔案夾
  6. 如果使用了QML,則将Qt 安裝目錄下qml檔案夾 (C:\Qt\Qt5.10.0\5.10.0\msvc2015_64\qml \)下的全部子檔案夾拷貝到釋出檔案夾
  7. 關閉 Qt creator ,暫時将 Qt 安裝路徑重命名,比如将 C:\Qt 更改為 C:\QtTempt。在釋出完成後要記得更改回來
  8. 運作app.exe

       經過上述步驟,一般都能打包出正常執行程式,但是整個檔案夾可能會有1-2GB,是以接下來就是分步删除不需要的檔案,并檢視 app.exe是否正常工作。 删除檔案有以下幾點技巧:

  1. 因為釋出的時release版本程式,所有可以先查找所有 d.dll 字尾的檔案,并全部删除。
  2. QML (Qt quick 2) 常用到的dll 有Qt5Core.dll, Qt5QuickControls2.dll, Qt5Multimedia.dll, Qt5Quick.dll, Qt5Qml.dll, Qt5Widgets.dll, Qt5Gui.dll, Qt5Network.dll, Qt5QuickTemplates2.dll
  3. QML (Qt quick 2) 常用到的檔案夾有 platforms, Qt, QtQuick, QtQuick.2, QtQml

繼續閱讀