您當前的位置:首頁 > 書法

包含第三方庫的Qt工程的封裝釋出——以Qt+PCL程式的執行庫查詢和新增為例

作者:由 不如一墨 發表于 書法時間:2021-01-09

編寫日期:2021年1月9日

目錄

一、

在Visual Studio中生成工程

二、

透過Qt的打包釋出工具新增Qt依賴

三、

查詢和補充第三方依賴

1。 透過Visual Studio的dumpbin工具來查詢。dll依賴

2。 簡單粗暴的方法:直接複製相關環境變數目錄中的所有。dll檔案

一、

在Visual Studio中生成工程

將專案的生成模式切換為【Release】,在右鍵單擊專案,點選【生成】,生成專案的exe可執行檔案。

包含第三方庫的Qt工程的封裝釋出——以Qt+PCL程式的執行庫查詢和新增為例

前往專案的【x64/Release】(其他體系架構請把x64替換成x86,ARM等等),將生成的【。exe】可執行檔案複製出來:

包含第三方庫的Qt工程的封裝釋出——以Qt+PCL程式的執行庫查詢和新增為例

二、

透過Qt的打包釋出工具新增Qt依賴

Qt內建了windeployqt工具,直接執行該工具,即可將程式執行所需要的所有Qt元件複製到放置。exe檔案的資料夾

在電腦任意位置新建文字文件,填入以下內容:

cd “C:\Qt\5。15。2\msvc2019_64\bin”

windeployqt “D:\Point_Cloud_Application\Point_Cloud_Application_v1。exe” -release

第一行引號內目錄為本機的Qt安裝目錄,第二行引號內為上一步當中複製。exe檔案的目標目錄,根據自己本機上的情況調整。

儲存文字文件,修改後綴名為。bat(Windows 批處理指令碼)。雙擊執行指令碼,待指令碼執行完成後會發現放置。exe的資料夾裡面已經新增完畢執行程式所必需的Qt依賴:

包含第三方庫的Qt工程的封裝釋出——以Qt+PCL程式的執行庫查詢和新增為例

(注:如果編寫的Qt程式沒有多語言適配需求,可以刪除此處的【translations】資料夾節省空間)

三、

查詢和補充第三方依賴

1. 透過Visual Studio的dumpbin工具來查詢.dll依賴

在電腦任意位置新建文字文件,填入以下內容:

“C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14。28。29333\bin\Hostx64\x64\dumpbin。exe” /imports “D:\Point_Cloud_Application\ Point_Cloud_Application_v1。exe” >“D:\user\Desktop\DllHunter。txt”

在第一個引號當中是dumpbin。exe工具的所在目錄,其內容隨Visual Studio安裝目錄不同可能有所不同;第二個引號當中是所需要分析依賴的。exe檔案的所在目錄;第三個引號當中是生成的依賴分析報告的儲存目錄。

儲存文字文件,修改後綴名為。bat(Windows 批處理指令碼)。雙擊執行指令碼,在剛剛指定的儲存目錄下開啟依賴分析報告:

包含第三方庫的Qt工程的封裝釋出——以Qt+PCL程式的執行庫查詢和新增為例

將檔案中所有***。dll(如上圖當中紅框部分)保留下來,其餘內容全部刪除,得到的列表就是該。exe檔案直接依賴的。dll動態連結庫:

包含第三方庫的Qt工程的封裝釋出——以Qt+PCL程式的執行庫查詢和新增為例

然後將這些。dll檔案複製到。exe檔案的所在目錄下。

到這裡就結束了嗎?沒有,因為這些。dll檔案也是不能獨立執行的,還需要依賴其他更多的。dll檔案,而。dll們依賴的。dll們還會依賴更多更多的。dll……以此類推,最後可以推匯出來一顆巨大的【依賴樹】。顯然,透過人工遍歷這棵樹去查詢這些依賴是及其麻煩的。

2. 簡單粗暴的方法:直接複製相關環境變數目錄中的所有.dll檔案

除非對程式的體積大小有嚴格要求,一個比較簡單的方法是直接去本程式所依賴的執行平臺的環境變數目錄中,將所有【Release】版本的。dll檔案(一般來說,軟體執行平臺的每一個動態連結庫都會提供名字相似的兩套。dll檔案,一般無後綴的是【Release】版本的,追加了形如【d】、【gd】等字尾的是【Debug】版本的)複製到。exe程式所在目錄下。

此時,將整個資料夾複製到任何一臺電腦上,就都能正常執行程式而不會再出現【缺少依賴】一類的錯誤了:

包含第三方庫的Qt工程的封裝釋出——以Qt+PCL程式的執行庫查詢和新增為例

包含第三方庫的Qt工程的封裝釋出——以Qt+PCL程式的執行庫查詢和新增為例

標簽: dll  exe  依賴  Qt  目錄