应用程序无法正常启动(0xc000007b)解决
注:本文對0xc000007b的問題本質進行了說明,可以說對網上雜七雜八的聲音做了一個統一。
問題情景:
vs2013 寫的一個64位的exe程序,release后帶著來自系統目錄C:\Windows\SysWOW64\msvcr120.dll 到一個沒有runtime的win7環境去運行,沒有用到MFC,所以帶著這個msvcr120.dll就足夠了
但是拷貝過去后一運行就出現如下對話框:
首先懷疑msvcr120.dll還不夠,于是也拷貝了msvcp120.dll和vccorlib120.dll,問題依舊
其次,搜索了網絡上其他人碰到的錯誤,做了:
1、說缺乏dx9,于是用dxdiag命令打開看,發現系統是有dx11的,根據向下兼容,不可能缺乏dx9
為了驗證,我特地重裝了dx8到本機,問題依舊,所以說dx9缺乏的都是比較坑爹的,因為目前的window都是默認支持dx,更不用說dx9這么老的東西了
2、說缺乏vc環境,這個我已經做了,沒有缺乏
最后查到的原因所在,出乎你們的想象:SysWOW64目錄下的dll并非確保是64位的,實際上我從這里拷貝出來的msvcr120.dll是32位的。
那么到哪里去找真正的64位的dll呢?在這里 vs2013安裝目錄\VC\redist\x64,這里有正統的dll
此外,原則上x86的也應該從該處的x86目錄拷貝,畢竟這是才是面向分發的。
更換msvcr120.dll后,問題排除。
總結:
1、出現0xc000007b——應用程序無法正常啟動
其根本原因是缺乏所需要的DLL,提供了錯誤版本的dll相當于沒有DLL, 提示完全一樣
2、網上有人說缺乏dx運行環境,如果屬實,也是因為缺乏dx相關的dll
所以根本原因,在低一點
3、與程序是32還是64位沒有直接關系,但是與你的程序對應不上的dll版本,往往很難發現問題,要引起注意
4、網上的資料,太粗糙了,流于表面,大家要有分辨能力。
5、發布的時候,需要vc或mfc環境,到你的開發工具的目錄的redist目錄去找就可以,取系統目錄找就不對了
所以,以后碰到這個錯誤,就不需要茫然了,肯定是缺乏dll或者dll版本不對。
以上為轉發,下面是我的問題解決過程(去除踩坑過程):
我運行一個自己寫的上位機軟件,兩臺電腦,其中一臺正常運行,另一臺報錯缺失msvcp120.dll,于是網上下載了一個放在路徑C:/Windows/system32下,接下來報錯0xc000007b,本來以為是一個新的錯誤,在網上查了一通,沒有解決。
由上面發現可能是msvcp120.dll文件有問題,所以在好的電腦C:/Windows/system32路徑下,把msvcp120.dll文件拷貝過來,同時也把路徑C:/Windows/sysWOW64路徑下的msvcp120.dll拷貝過來。問題解決。
總結
以上是生活随笔為你收集整理的应用程序无法正常启动(0xc000007b)解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: p5绘图板
- 下一篇: 翻译Houdini官方文档:PDG/TO