本文轉自:http://blog.sina.com.cn/s/blog_654116410102x9hr.html
注:本文對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版本不對。
另一種解決方案:把兩個64位的dll拷貝到工程目錄下
