1. 程式人生 > >Windows下Qt程式打包成

Windows下Qt程式打包成

打包目的:

QT寫的程式可執行檔案需要拷貝到其他沒有QT環境的windows裝置上執行。

第一步:構建

工具:QT+qmake+MinGW

我的QT程式是qmake寫的,在專案—>編輯構建配置選擇Release模式,然後構建執行,確認程式沒有錯誤。

第二步:依賴

工具:windeployqt

在Release構建目錄中,找出編譯好的可執行檔案,發現並不能執行,缺少依賴的庫檔案。

1、新建空資料夾

  • 將可執行檔案拷貝到空資料夾中。

2、解決依賴的工具

  • 網上介紹比較多的就是Dependency Walker工具,我沒有用這個工具,不細說
            

          對於這個工具很多部落格都說到了,典型的黃色問號

代表缺少的依賴,需要我們自己去找到,然後拷貝都與可執行檔案同級目錄下,麻煩程度可想而知。

  • 使用QT自帶的windeployqt工具,它在qt的bin目錄下,所以需要把qt的bin目錄加入到環境變數中,這樣可以在命令列執行windeployqt命令。
            開啟可執行檔案所在的目錄,命令列執行windeployqt xxxx.exe,改工具會自動分析依賴,並全部拷貝到當前資料夾下,省事很多。

          

3、雙擊可執行檔案,現在應該可以運行了吧,不幸的是

           

  • 其中一個原因是:動態連結庫的版本問題,現在需要手動去QT執行環境的bin目錄下將那些無法定位程式輸入點
    的動態庫拷貝過來,再次雙擊.exe,程式能正常運行了。

         但是,依賴問題並沒有全部解決。

4、在開發機能執行並不代表在其他裸機上能跑

  • 把此刻我們配置的專案資料夾拷貝到其他裸機(無QT等環境)上,雙擊.exe,會發現缺少某些.dll,缺什麼補什麼,去拷貝就行了,直到能執行。
  • 現在才算解決了所有依賴問題(反正這個過程我用了兩天)。

第三步:打包

到這一步之後,打包應該沒什麼問題了,不管什麼工具基本上是傻瓜式步驟,都做的很好。

  • 我調研的打包工具有:Enigma Virtual Box、FilePacker、MoleBox Pro等,最終根據需求選擇了FilePacker。
  • FilePacker能把可執行檔案和依賴的動態庫等打包成一個可執行檔案。

                  

  • 隨便建立工程名,下一步

           

  • 源目錄選擇第二步中新增依賴的檔案目錄

                    

  • 選擇可執行檔案

          

  • 選擇程序結束後刪除解壓檔案,壓縮等級調到最高。

          

  • 臨時解壓路徑選擇你想要檔案解壓的地方,圖示是有要求的,自己下個編輯軟體做一個。

           

  • 然後下一步,就可以了,最後生成可執行的.exe,可以弄到其他裝置上試一試。