QT編譯發佈程序後報錯如缺乏dll、「應用程序沒法正常啓動(0xc000007b)」的可能解決方法

QT編譯發佈程序後報錯如缺乏dll、「應用程序沒法正常啓動(0xc000007b)」的可能解決方法

最近項目要用qt,由於初學沒有經驗,遇到些小問題經常沒什麼頭緒,也查不到解決方法,剛剛還由於低端錯誤耽誤了羣裏一位朋友的時間QT編譯發佈程序後報錯如缺乏dll、「應用程序沒法正常啓動(0xc000007b)」的可能解決方法。決定之後若是遇到相似小問題就記錄下來,也方便初學者少走彎路了。html

 

首先,qt動態編譯發佈程序通常是在Qtcreater中編譯出release版本並運行後,在生成的release版本文件夾中取出exe。單獨運行exe時會報錯缺乏dll,出現這個問題直接在qt庫的文件夾中搜索提示的dll,放入exe所在的文件夾便可。c++

 

我遇到的(0xc000007b)問題也出在這個階段,也是太粗心了。windows

報錯(0xc000007b)的可能解決方法:ui

① 許多dll應當取自Qt5.4.0\5.4\msvc2013_64\bin目錄下,而在Qt5.4.0\Tools\QtCreator\bin中也有許多同名的dll,直接搜索文件時Qt5.4.0\Tools\QtCreator\bin中的dll每每先蹦出來,若是將這些dll放到exe文件夾中,就會報錯「應用程序沒法正常啓動(0xc000007b)」。碰到這種狀況真是無解了,徹底沒有線索……因此若是出現這個問題,先確認下所拷貝dll的來源是否正確,qt程序對dll的要求是比較高的。url

推薦使用一款軟件Process Explorer來查詢exe所依賴的dll有哪些以及具體地址在哪裏,防止犯錯。spa

在軟件中進行以下設置:.net

QT編譯發佈程序後報錯如缺乏dll、「應用程序沒法正常啓動(0xc000007b)」的可能解決方法

以後打開Qtcreater,編譯程序並運行,在Process Explorer中會出現exe的進程,鼠標選中後可在下方查看其所依賴的dll及其位置。通常在系統盤中的dll能夠無論,主要看PATH位於Qt文件夾中的dll,那些有不少每每就是exe所須要的dll。指針

② qt5發佈程序對於dll的放置也有一些要求和變化,在網上見到有人出現0xc000007b問題是由於qwindows.dll未放入。這裏轉發 derryzhang 的博文http://blog.csdn.net/derryzhang/article/details/17002193,講解得很是詳細。orm

由此,最後dll放置結構應是如此:htm

  1. --platforms  
  2.        --qwindows.dll  
  3.        --*.dll  
  4. --accessible                    //Qt5.4中無此文件夾,故可忽略
  5.        --qtaccessiblewidgets.dll//Qt5.4中無此文件,故可忽略  
  6.        --*.dll  
  7. --plugins
  8.        --folders 
  9.               --*.dll  
  10. --yourApp.exe  
  11. --Qt5Core.dll        //Qt5版本
  12. --Qt5Gui.dll       
  13. --Qt5Widgets.dll  
  14. --icudt49.dll       //Qt5.4中爲icudt53.dll,下同
  15. --icuin49.dll      
  16. --icuuc49.dll  
  17. --libEGL.dll       //此兩個dll如未用到openGL應該也可不放
  18. --libGLESv2.dll  
  19. --libgcc_s_sjlj-1.dll(mingw)//編譯器爲mingw時才須要的三個文件  
  20. --libstdc++-6.dll(mingw)  
  21. --libwinpthread-1.dll(mingw)  
  22. --msvcr110.dll(msvc)//編譯器爲msvc時才須要的兩個文件,對應所用vs的版本號
  23. --msvcp110.dll(msvc) 

 截張個人(gdal111.dll爲第三方的,可忽略):

QT編譯發佈程序後報錯如缺乏dll、「應用程序沒法正常啓動(0xc000007b)」的可能解決方法

③ 在某些論壇有人稱是程序中存在指針越界的狀況(編譯能夠運行怎麼會出現這個狀況,不解……),若是以上方法都不能解決問題,可嘗試以此爲思路。


在發佈程序時若是遇到其餘問題可參考 江湖麼名 的這篇博文:http://www.cnblogs.com/mmix2009/p/3536825.html 

對其餘問題也有很詳細的概括。

相關文章
相關標籤/搜索