一、背景
在VS環境下開發的QT程序,在VS中可以正常的執行並且顯示QT界面,但是直接通過.exe來執行程序是執行不了的。
二、原因
經過查閱資料,當我們用VS直接運行時,不報錯是因為VS自己去找對應的dll(在你新建工程的時候,VS就幫你配置好了,如下圖1),但直接運行release或者debug目錄下的exe時,其只會在當前exe運行目錄以及window環境變量目錄中去找dll。當找不到時程序就會提示無法找到xxx.dll,如圖二。
圖1
圖2
三、解決方法
3.1 獲取你已經編譯好的可執行文件xxx.exe,把此可執行文件放到你新建的一個目錄下
例如:把xxx.exe文件放在此目錄下 D:\EXE_Unpack\UIBotSibSimulatorQT\
3.2 查找windeployqt.exe的路徑 (推薦你用Everything 這款軟件來查找,比較快)
如果你記得你安裝QT時的路徑,那么不需要查找了,如果不記得,有兩種方式可以查:
- 在電腦中查找,速度非常慢
- 使用Everything 查找,比較快,是一款非常不錯的軟件
我使用的是Everything 查找,如下圖所示:
但是我們可以看到windeployqt.exe有好幾個,但是用哪個呢?這就需要看你VS在配置QT的時候,用的是那種環境,那怎么看VS下QT的環境了?如下圖所示
點擊QT Options后會出現下面這個圖,如下圖所示:
我的VS2019配置的編譯器路徑是C:\Qt\Qt5.13.2\5.13.2\msvc2017_64\,所以我要用的windeployqt.exe路徑為C:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin\下的windeployqt.exe,
除了下面如何使用windeployqt xxx.exe 命令外,你還可以通過配置環境變量來使用(添加C:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin的環境變量,快捷鍵Win+R打開運行面板,輸入cmd,在Windows窗口中就可以通過使用windeployqt xxx.exe 命令來解決QT的動態庫依賴問題,通過配置環境變量的方式,在這里是沒有通過圖示表現出來的)
如果沒有報錯就代表成功了。成功后目錄如下所示:
你點擊xxx.exe后就可以直接運行了