最近項目要用qt,由於初學沒有經驗,遇到些小問題經常沒什麼頭緒,也查不到解決方法,剛剛還由於低端錯誤耽誤了羣裏一位朋友的時間。決定之後若是遇到相似小問題就記錄下來,也方便初學者少走彎路了。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
以後打開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
截張個人(gdal111.dll爲第三方的,可忽略):
③ 在某些論壇有人稱是程序中存在指針越界的狀況(編譯能夠運行怎麼會出現這個狀況,不解……),若是以上方法都不能解決問題,可嘗試以此爲思路。
在發佈程序時若是遇到其餘問題可參考 江湖麼名 的這篇博文:http://www.cnblogs.com/mmix2009/p/3536825.html
對其餘問題也有很詳細的概括。