Epic版JustCause4(正當防衛4)0xc000007b錯誤解決方法

最後更新:2020-5-15

        大家好,前段時間Epic免費領JustCause4(正當防衛4),大家都領了吧?雖然沒有官方數據,但我知道,領得人特別多——因爲向我諮詢這個遊戲0xc000007b錯誤的人特別多!大家下載好遊戲後,雙擊運行時,遊戲能正常運行嗎?其實從這裏就會出現一個分水嶺了:Win8 Win10用戶,只要電腦硬件別太差,該裝的驅動都裝了,基本就能跑起來了;但是Win7用戶,基本100%會遇到0xc000007b錯誤。那究竟是怎麼回事呢?

        可能你雙擊運行時,首先遇到的並不是0xc000007b錯誤,而是缺少api-ms-win-core-kernel32-legacy-l1-1-0.dll文件,當你辛辛苦苦從網上找到dll文件後才變成了0xc000007b錯誤;或者有些人運氣比較好,跳過了0xc000007b錯誤的坑,但是後面提示缺少api-ms-win-core-synch-ansi-l1-1-0.dll這個文件,又讓你抓耳撓腮——百度搜索後,你會發現全網竟然不存在這個api-ms-win-core-synch-ansi-l1-1-0.dll文件!究竟是怎麼回事?

        查一下Epic平臺該遊戲介紹,它是可以從Windows7 x64系統一直支持到Windows10 x64系統的,那麼爲什麼偏偏就是Windows7運行不起來呢?經過我多方面的分析,這個錯誤基本就是Epic平臺自己的編程人員,因爲能力或經驗不足,導致的程序Bug!因爲從其他玩家的反饋來看,stream平臺上的遊戲是可以在Windows7上運行的,盜版也行,唯獨Epic版不行,基本可以肯定是Epic在加入平臺程序限制時引入的BUG。

        這個BUG具體是怎麼回事呢?稍微帶一句,普通玩家可忽略本段。微軟最新的開發策略是所有開發者在調用Windows 10 API時都應該通過 The " Umbrella" Libs來調用最終的函數,而不應該直接去調用包含這些函數的API dll文件。而顯然Epic在編程時沒有遵從微軟的建議而直接去調用了dll文件,最終導致在Windows 7系統上由於兼容性的原因而無法運行。我舉個例子,可能不太恰當,但是基本就能明白。就比如你在家想發個順風快遞,你應該怎麼做呢?正確的做法應該是打順風的客服電話,告訴你家的地址,然後等快遞上門取件;而不應該去翻你的手機通話記錄,查查上週給你派件的那個順風小哥的電話,回撥過去。爲什麼應該是第一種而不是第二種呢?因爲第一種可以保證你找到順風客服,同時保證順風的客服能給你分配一個離你最近的快遞員享受最快的服務。而如果你直接去回撥電話,可能遇到的情況是這個小哥已經離職了、不管了;或者他正在一個離你家特別遠的地方,沒法取件;亦或是最重要的一點,如果你現在正在單位而不是在家,那麼那個小哥根本就沒辦法到你所在的地方去取件。對於這個技術問題同樣如此,微軟建議調用函數時通過The " Umbrella" Libs,意思就是讓你去撥打順風的客服電話,讓客服給你分配最新的小哥(即告訴你最終的函數在哪個dll文件裏),而不是你自己去給小哥回撥電話(即直接自己去找dll文件)。當然,你直接回撥電話有時候也能把那個小哥約來取件(即能正常運行,比如Windows10系統,遊戲正常運行),但還有很多情況是那個小哥不在你這裏,取不了(即Windows7系統,函數的位置不同,遊戲運行不起來)。更坑爹的是,如果你就認準了必須要找上次那個臨時替班給你取件的帥帥的小哥(即必須調用api-ms-win-core-synch-ansi-l1-1-0.dll這個文件),你會發現到哪都找不到他,問誰也不認識他(即全網都找不到api-ms-win-core-synch-ansi-l1-1-0.dll文件,怎麼求助也沒有),因爲這個小哥根本就不是順風的人(即微軟根本就未正式發佈過api-ms-win-core-synch-ansi-l1-1-0.dll),只是臨時替班(即只在Epic的開發人員的電腦上有這個dll文件)。如果你非玩不可,當時只有一種方案,即重裝系統爲Windows 10(即以後發什麼快遞都必須回家發,因爲只有家附件才能找到你認識的那個順風小哥)。

        那麼如何解決呢?最根本的方法是Epic自己修復這個BUG,不再去錯誤的調用不該調用的dll文件。但貌似不太容易,就算真修復也需要一段時間。不過別怕,我來解救你們。這篇文件對應了一個下載CSDN的下載地址,在那裏我上傳了Epic版需要調用的dll文件,並且是不會產生0xc000007b錯誤的文件(或者去我的網盤:https://pan.baidu.com/s/1G_xipSO6VpSc9ipAtqB9Fg   密碼:u3z6)。這個地址包括瞭如下文件:api-ms-win-core-console-l2-1-0.dll、api-ms-win-core-io-l1-1-1.dll、api-ms-win-core-kernel32-legacy-l1-1-0.dll、api-ms-win-core-kernel32-legacy-l1-1-1.dll、api-ms-win-core-libraryloader-l1-2-0.dll、API-MS-Win-core-string-l2-1-0.dll、api-ms-win-core-synch-ansi-l1-1-0.dll、api-ms-win-core-synch-l1-2-1.dll、api-ms-win-core-threadpool-legacy-l1-1-0.dll、API-MS-WIN-MM-TIME-L1-1-0.dll。當然這些文件都是64位的,因爲這個遊戲要求必須是64位系統,32位跑不起來。大家只要下載、解壓,把解出來的dll文件放在正當防衛4的目錄下,與JustCause4.exe同一文件夾下即可,如下圖:

        放置完這些文件後,0xc000007b錯誤會消失,缺少api-ms-win-core-synch-ansi-l1-1-0.dll的錯誤會消失。如果你的電腦硬件配置夠、運行庫打得全、驅動裝的好,那麼遊戲就能跑起來了。如果還是不能跑,那麼就從硬件、運行庫、驅動三方面去考慮問題在哪了。

        可能有人會問了,你剛纔不是說全網沒有api-ms-win-core-synch-ansi-l1-1-0.dll文件嗎?你是哪來的?這塊我也帶幾句,普通用戶可以忽略本段。這個文件是我做的,自己寫的。那怎麼寫呢?很簡單,遊戲不是提示缺少api-ms-win-core-synch-ansi-l1-1-0.dll嗎?你就隨便拿一個別的dll文件,改成這個名,放到遊戲目錄下。這時當然運行不起來了,但遊戲會提示無法定位輸入點XXX。這個提示的意思就是,在api-ms-win-core-synch-ansi-l1-1-0.dll文件裏,我沒有找到XXX這個函數,所以運行不了。這時把函數名記下來,到微軟查一下到底是個什麼函數,怎麼定義的?變量有什麼?然後照貓畫虎,編個程序把這個函數寫進去,然後重命名爲api-ms-win-core-synch-ansi-l1-1-0.dll,再放到遊戲文件夾下,調用時就有相應的函數了,因此也能下一步了。

        最後總結一下,不管是0xc000007b錯誤,還是缺少dll文件錯誤,都可以用本文裏提供的壓縮包裏的dll文件直接拷貝到遊戲目錄解決。本文全篇手敲文字,再加上手敲編程dll文件,工作量不小。如果各位看官滿意此篇文章想打賞點小錢的,感激不盡。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章