2017-05-30 104 views
0

我在嘗試部署使用Qt構建的新應用程序時遇到了嚴重的麻煩。當從Qt Creator啓動時(所有版本:調試,配置文件,發行版),程序運行良好,但雙擊.exe啓動時會崩潰。一個錯誤對話框彈出以下消息:不可能部署Qt應用程序

defaultTypeFor @ QTimer @@ CA AW4TimerType @ Qt的@@^h @ Z無法在動態鏈接庫位於 C:?\用戶\ SDT1 \ Documents \ Scanner \ Scanner_deploy \ Scanner.exe

我使用的是Qt 5.8.0,我正在用MSVC2015_64位構建項目。我使用windeployqt.exe從

C:\ Qt的\ 5.8 \ msvc2015_64 \ BIN

到dinamically鏈接Qt庫。

自從我從舊的connect語法(使用宏SIGNALSLOT)移至具有函數指針的新語法後,此問題開始發生。我也開始使用QTimer::singleShot而不是QMetaObject::invokeMethod,並不意外的是錯誤涉及到QTimer。然而,這個程序在Qt Creator內運行得很好,我無法弄清楚問題所在,因爲我使用windeployqt來獲取正確的dll。

此外,爲什麼我的.exe在錯誤消息中被稱爲「dinamic鏈接庫」?這是一個.exe!

回答

0

好的我解決了這個問題,但我仍然不確定發生了什麼問題:我的路徑變量指向Qt版本5.7(唯一的其他版本)的文件夾。我將它更改爲5.8,重新啓動並重新部署,但它不起作用。然後,我刪除了構建文件夾,重建並重新部署,並且它工作。所以,這個問題與構建。

我不知道這會如何發生。我改回了Qt 5.7的路徑並重新啓動以進行一些測試。問題再次出現,但我不明白路徑如何影響構建。儘管Path中有Qt 5.7,但在Qt Creator中,編譯輸出顯示了指向5.8文件夾(qmake.exe,uic.exe,包含文件夾,...)的所有Qt文件。沒有提到版本5.7。只有jom.exe不在Qt 5.8文件夾中,因爲它位於Qt Creator文件夾中。也許這是從Qt 5.7加載的東西,通過查看路徑?誰知道......