QT編譯發布程序后報錯如缺少dll、“應用程序無法正常啟動(0xc000007b)”的可能解決方法


QT編譯發布程序后報錯如缺少dll、“應用程序無法正常啟動(0xc000007b)”的可能解決方法

最近項目要用qt,因為初學沒有經驗,遇到些小問題常常沒什么頭緒,也查不到解決方法,剛剛還因為低端錯誤耽誤了群里一位朋友的時間QT編譯發布程序后報錯如缺少dll、“應用程序無法正常啟動(0xc000007b)”的可能解決方法。決定以后如果遇到類似小問題就記錄下來,也方便初學者少走彎路了。

 

首先,qt動態編譯發布程序一般是在Qtcreater中編譯出release版本並運行后,在生成的release版本文件夾中取出exe。單獨運行exe時會報錯缺少dll,出現這個問題直接在qt庫的文件夾中搜索提示的dll,放入exe所在的文件夾即可。

 

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

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

① 許多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的要求是比較高的。

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

在軟件中進行如下設置:

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,講解得非常詳細。

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

  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 

對其他問題也有很詳細的歸納。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM