Windows下程序启动时出现0xc000007b错误的解决方案
一、背景介紹
? ? ? 不久前用Qt開發了一款小工具在公司使用,Debug運行時一切正常。可是當Release編譯發布打包之后,運行時彈出這樣的提示框:
? ? ? 略一思考,首先排除了DLL缺失的可能性。我知道Qt應用程序在發布的時候,需要將相關DLL都拷貝到同一個目錄下,還得把平臺插件文件夾也加進來。因此,整個發布后的程序組織結構如下:
? ? ? 因此排除了DLL缺失的問題。那么可能是什么原因呢?在Google中搜索錯誤代碼0xc000007b,不少帖子提示是庫的版本不一致。有可能是因為在64位程序中引用了32位的庫,或者在32位的程序中引入了64位的庫導致出錯的。怎么確定呢?使用Dependency Walker即可查看:
? ? ? 可以看到,我的程序是64位版本的,但是確實引用了兩個32位的庫。那么,知道了原因了就好辦了。
二、解決方案
?(1)方案一:方法比較簡單,將32位的庫都替換成64位的庫。這個通過設置VS的鏈接器選項就可以完成。一般是因為粗心而導致鏈接到了版本不一致的庫,但是在Debug和編譯時都不報錯,略感無語。
?(2)方案二:對于第一種方案不適用的情況,必須采用第二種方案了。本人在第二種情況中糾纏了多時。經過反復確認,工程類型設置成了X64類型,庫也替換成了x64的,但是編譯出來的程序中總會鏈接到32位的庫。這樣,不管我怎么編譯修改,仍然還是彈出0xc000007b錯誤提示框。解決方法是:修改工程的manifest文件。
? ? ? 像這樣:把processorArchitecture都修改成amd64,重新編譯程序后鏈接的就是64位的庫了。僅僅只要修改這兩個地方,如果改動其他地方,可能導致程序出錯:
三、參考鏈接
1.?http://blog.csdn.net/vbcom/article/details/7245186
2.?https://msoos.wordpress.com/2010/09/11/0xc000007b-error-solution/
3.?http://stackoverflow.com/questions/10492037/the-application-was-unable-to-start-correctly-0xc000007b
4.?https://social.msdn.microsoft.com/Forums/en-US/c0bc5e8e-1b17-40e2-9476-c1900b5b04ea/comctl32dll-64-bit-version?forum=netfx64bit
5.?http://stackoverflow.com/questions/24148196/incorrect-comctl32-dll-is-loaded-after-porting-a-project-from-win32-to-x64-platf
轉載于:https://www.cnblogs.com/csuftzzk/p/windows_launch_error_0xc000007b.html
總結
以上是生活随笔為你收集整理的Windows下程序启动时出现0xc000007b错误的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C C++ 语法
- 下一篇: OpenCV circle函数