目錄
2.enigma virtual box將庫和exe文件打包成一個可執行文件。
2.1 採用 Enigma Virtual Box 打包成exe
-
1. 打包命令 -windeployqt
qt自帶的windeployqt。
新創建一個目錄,將待發布的exe文件放入此目錄,而後運行windeployqt。運行完畢後,在此目錄下包括exe及其依賴的庫文件。
可能提示命令沒找到,修改環境變量中的PATH,增加qt的編譯工具路徑下的bin目錄即可,實例:在PATH環境變量中增加C:\Qt\Qt5.13.2\5.13.2\mingw73_64\bin
打包後的文件夾示例:
2.enigma virtual box將庫和exe文件打包成一個可執行文件。
2.1 採用 Enigma Virtual Box 打包成exe
官網地址爲: https://www.enigmaprotector.com/en/downloads.html 來進行。
此方法在網上有很多資料,比較簡單,不再贅述。
基本界面如下:選擇qt編譯生成主程序。添加依賴的庫並保持相對路徑不變,依賴的庫由第一步中的windeployqt已經拷貝到和exe文件同一個文件夾中了。
-
2.2 無法定位程序輸入點 動態鏈接庫問題處理及原因分析
打包後運行提示:
原因分析:
在自己的磁盤搜索 此庫文件名稱 libwinpthread-1,例如我的電腦裏面C盤搜出
D盤搜出
查看環境變量中path的配置,上述TDM-GCC和perl的路徑配置都在qt前面,同時在1中用windeployqt 打包時,拷貝出來的libwinpthread-1.dll的時間和tdm-gcc是一致的,都是2015/6/28 14:28,說明打包時沒有采用qt下的庫,而採用了其他庫,導致程序在運行時報錯。
將tdm-gcc卸載掉,不用了。再重新運行windeployqt,如下
提示沒有工具鏈了。我們查看path的設置,實際上qt安裝時,沒有將編譯工具的路徑添加到path中,手動添加,實例如下:
C:\Qt\Qt5.13.2\Tools\mingw730_64\bin
配置後,再次windeployqt ,可以看到庫的時間已經qt下mingw編譯工具下的庫了
而後再用virtual box打包成一個單一的exe文件,就可以正常運行了。