2012-11-24 64 views
3

我正在開發一個跨平臺的Qt音頻應用程序。在Linux上,應用程序運行沒有任何問題,但在Windows上,應用程序在從Qt Creator啓動時不會執行。Qt應用程序不會在Qt Creator中執行

當與發佈配置(或不調試)運行,Qt Creator的只是說:

「該計劃已意外結束了。」

如果我與調試配置(或調試)運行,Qt Creator的說:

「在啓動程序退出,代碼爲0x0000135」。

由於使用Google的錯誤沒有任何幫助,我決定將我的應用程序所需的每個.exe和.dll(需要Qt庫 - 包括QtCore)都複製到一個空目錄中,並且應用程序完美地執行就像在Linux下一樣。

所以,我猜這是Windows沒有找到我的應用程序需要的DLL的問題。

上週末,當我將系統升級到Windows 8時,出現了這個問題。以前(使用Windows 7)我沒有這樣的問題。

有誰知道不涉及修改構建參數(存儲在文件.user)的解決方案嗎?

我不想這樣做,因爲當我在Linux下測試應用程序時,該文件將失效,我不想保留它的版本。

+0

嘗試卸載Creator和Qt,並進行全新安裝,以便所有設置都將在Windows 8更新混亂時重新應用。 –

+0

剛剛完成嘗試,同樣的錯誤。 –

回答

2

剛剛解決了!

可能是Qt Creator中的一個bug。

我的項目裏面有4個子項目:main.exe,core.dll,side.dll,external.dll。

main.exe needs core.dll and side.dll 
core.dll needs external.dll 

由於MAIN.EXE只需要core.dll和side.dll,我還沒有添加的引用external.dll。 Qt Creator應該足夠聰明以檢測它的依賴並相應地添加它們(好吧,最後這是在Linux下發生的)。

由於它無法正確檢測依賴關係,因此當我嘗試從Qt Creator運行main.exe時,它不會構建正確的PATH環境變量,從而導致問題。

由我main.pro文件中添加以下行解決它:

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../external/release/ -lexternal 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../external/debug/ -lexternal 

#INCLUDEPATH += $$PWD/../external 
win32: DEPENDPATH += $$PWD/../external 

注:我改變了模塊名稱爲更好的理解。

1

我想這是因爲執行環境中的路徑不再包含Qt-DLL的路徑。轉到項目設置並檢查「調試和執行」設置中的PATH變量 在我的情況下,例如: C:\ QtSDK \ mingw \ bin; C:\ QtSDK \ Desktop \ Qt \ 4.8.1 \ mingw \ lib ;. ..其他路徑...

關於。

+0

已經選中此項。路徑是好的。如果我沒有將Qt dll複製到「空目錄」,應用程序將執行。 –

0

這個問題是絕對有一些缺失的DLL(S)!我發現,當我把dll的直接放入文件夾(例如png3。DLL)與可執行文件,然後從QT創建者運行它將運行! 我做了什麼:在你的輸出目錄(可執行文件所在的位置)打開可執行文件(雙擊),Windows顯示缺少的dll名稱。您可以找到它們並直接複製到該文件夾​​中。然後從Qt創建者運行應用程序!如果dll合適,你應該成功。之後,您嘗試從exec文件夾中刪除dll,並通過qt創建者運行應用程序,直到它再次拋出錯誤。這樣你找到了缺少的DLL。之後,將qt creator「projects」設置中的「build environment」中的dll路徑添加到「Path」變量中。