赞
踩
最后更新: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文件,工作量不小。如果各位看官满意此篇文章想打赏点小钱的,感激不尽。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。