搜尋

首頁  >  問答  >  主體

c++ - Qt发布程序出错

一、问题点:我在Qt5.3.1上开发完一个应用程序后,在开发机上运行良好,当我部署到其他机器时(release版本发布)弹出如下图错误后崩溃:

二、已采取应对措施
1、复制所需的*.dll(Qt5Core.dll...)到应用程序同一目录;
2、复制platforms目录到应用程序同一目录;
3、复制libEGL.dll,libGLESv2.dll,D3DCompiler_43.dll到应用程序同一目录。

三、应用程序机构图

注:图中hellworld.exe为测试程序,能正常运行,crm.exe为发布程序不能正常运行。

四、寻求帮助
请问还有哪些可能的因素会造成此问题,分别有哪些解决办法,谢谢不吝指教!

黄舟黄舟2803 天前566

全部回覆(3)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 14:03:03

    您的映像,我也看不到,一直處於載入狀態。關於Qt開發,本人,簡單說一下,

    Qt開發版本選擇

    Qt的版本號碼一般是三位數字,建議在選擇版本的時候,選擇大的版本。例如:4.8.0、5.0.0、5.3.0、5.7.0...最後一個數字盡量為0.這樣的版本來說,相對於其他末尾非零數字的比較穩定吧。題主選的5.3.1,個人感覺不太好,但這次您的問題不在這裡。

    Qt win 應用程式的發布

    以下方法本人經過測試,覺得是比較方便可行的,如果不行,請參考他人方案。
    其實Qt的應用程式的發布很簡單,這麼好的框架,Qt肯定考慮到怎麼方便的發布程式。

    題外話

    Qt一次寫,多編譯發行,實現了他的跨平台性。不同的平台除了一些特殊的函式庫以外,幾乎使用的都是Qt的函式庫。發布的程式不能運行,多數都是庫的不完整性造成的。由於開發機器上已經配置了Qt的環境路徑,所以在資料夾下直接運行,不會出錯。但是純淨的機器,就很容易出錯。多數是缺少Qt庫文件。

    windeployqt

    這是Qt官方自帶的一個小程序,從名字可以看出win deploy(發布) qt.

    使用方法

    1.release您的程式;
    2.進入release資料夾下,除了可執行的程式外,其他都刪除,沒有用
    3.win下,按住shift鍵,滑鼠右鍵,選擇在此開啟指令視窗
    4.Qt環境路徑先配置。直接敲打windeployqt my.exe,回車
    5.查看您的release文件,多了好多文件,把整個文件夾拷貝到,乾淨的機器上,程序完美運行;
    5.經過以上步驟,還好多不能運作的,請查看rp

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 14:03:03

    不知是我網路還是SF自身原因,目前暫時看不到你的圖片(無限loading)。
    在Windows下發佈的話,根據你.pro專案文件裡面的"QT += ",這行所有的相關dll都要拷貝。
    例如QT += core gui network opengl widgets需要拷貝:

    Qt5Core.dll
    Qt5Gui.dll
    Qt5Network.dll
    Qt5OpenGL.dll
    Qt5Widgets.dll
    libEGLpendllll>Qt5Widgets.dll

    libEGL無視。

    然後根據你的編譯器(MSVC或MinGW),還要拷貝相關的dll,具體依賴的dll可以用Dependency Walker
    這個軟體查看。
    最後是platform的Windows目錄,也許只要qwindows.dll就可以了。

    把dll一個個放到程式同一目錄,慢慢排查。 <🎜>

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 14:03:03

    除了樓上說的 windeployqt,還可以用【dependency walker】看生成的 exe 的 dll 依賴,然後把所有的 dll 都拷貝了就好。

    回覆
    0
  • 取消回覆