程序运行失败,出现运行库错误怎么办?
1、 当尝试打开某些游戏时,可能会遇到一个错误提示:无法运行此程序,因为计算机中缺少d3dx9_xx.dll(其中xx可能代表不同的数字)。 很多人在遇到这种情况时,第一反应是直接通过搜索引擎查找缺失的d3dx9文件,然后将其下载并放入游戏目录。这样做之后,通常确实可以成功进入该游戏。然而,这种方法治标不治本。
2、 将d3dx9_xx.dll单独放置到游戏目录虽然解决了当前游戏的问题,但其他游戏仍可能因缺乏该文件而无法启动。这时又需要将d3dx9复制到另一个游戏目录,而且不同游戏可能需要不同版本的d3dx9文件,比如d3dx9_43、d3dx9_46或d3dx9_39等。这样反复寻找和替换非常麻烦。
3、 实际上,出现缺少d3dx9_xx.dll的问题,并不是因为游戏自带文件不足,而是因为电脑未安装完整的DirectX运行库。DirectX是由微软开发的一套用于支持游戏运行的系统组件,绝大多数现代游戏都需要依赖它才能正常工作,而d3dx9系列文件正是DirectX运行库的一部分。解决这一问题的最佳方式是从网上下载并安装DirectX Redist 2010.6,其大小约为80-90MB。在安装过程中,可以看到进度条中陆续安装了多个d3dx9_xx.dll文件到系统的目录下。完成安装后,原本提示缺少文件的游戏就可以正常打开了。
4、 此外,许多大型游戏的安装包中会包含DirectX运行库的安装程序,通常命名为dxwebsetup,这是DirectX的在线安装版本,需要联网才能完成安装。也有一些游戏(例如使命召唤11)直接集成了完整的DirectX运行库离线安装程序,方便用户无需额外下载即可完成安装。

5、 当遇到缺少 msvcpxxx.dll 或 msvcrxxx.dll 的问题时,很多人通常会通过百度搜索缺失的文件,然后将其下载到对应软件或游戏的安装目录下。然而,这种方法只是治标不治本。虽然当前这个软件可能因此能正常运行,但其他软件仍然可能会提示缺少类似的文件,甚至出现更严重的错误,例如应用程序无法正常启动 (0x……)。这种错误的根源并非某个特定软件或游戏目录下缺少名为msvcpxxx.dll的文件,而是系统缺少必要的运行库——Visual C++ 运行库。
6、 从文件名中可以看出,这些 dll 文件与 Visual C++ 运行库密切相关(ms 指的是 Microsoft,vc 指的是 Visual C++)。因此,解决方法是安装正确的 Visual C++ 运行库版本。不过,由于 Visual C++ 有多个版本,如何判断具体缺少哪个?这需要根据文件名中的数字来推断。例如:
7、 - msvcp60.dll 对应的是 Visual C++ 6.0 运行库。
8、 - msvcp70.dll 对应的是 Visual C++ 7.0 运行库。
9、 - msvcp80.dll 对应的是 Visual C++ 8.0 运行库,也就是 Visual C++ 2005。
10、 - msvcp90.dll 对应的是 Visual C++ 9.0 运行库,即 Visual C++ 2008。
11、 - msvcp100.dll 对应的是 Visual C++ 10.0 运行库,也就是 Visual C++ 2010。
12、 - msvcp110.dll 对应的是 Visual C++ 11.0 运行库,即 Visual C++ 2012。
13、 - msvcp120.dll 对应的是 Visual C++ 12.0 运行库,也就是 Visual C++ 2013。
14、 - msvcp140.dll 对应的是 Visual C++ 14.0 运行库,即 Visual C++ 2015。
15、 这里有一个小插曲:为什么没有 msvcp130.dll ?这是因为西方国家普遍避讳数字13,所以 Visual C++ 的版本直接从 12 跳到了 14,类似地,微软 Office 系列也没有 13 版本。
16、 对于 msvcrxxx.dll 文件,命名规则与 msvcpxxx.dll 相同,同样可以根据文件名中的数字来判断对应的 Visual C++ 运行库版本。
17、 需要注意的是,Visual C++ 运行库分为 32 位和 64 位版本,选择时需根据操作系统的类型进行匹配。此外,许多游戏的安装包中包含了一个名为 Redist 或 CommonRedist 的文件夹,里面就包含所需的 Visual C++ 运行库,文件名可能是 vcredist_x86(32 位)或 vcredist_x64(64 位)。
18、 为了确保今后运行各种软件时不再频繁遇到缺少 msvcp类的错误,建议一次性安装所有从 Visual C++ 2005 到 Visual C++ 2015 的运行库版本。这样可以全面覆盖不同软件对运行库的需求,避免反复解决问题的麻烦。

19、 应用程序出现并行配置不正确的错误,通常与缺少特定版本的Microsoft Visual C++(简称vc++)运行库有关。然而,具体缺少哪个版本的运行库,则需要根据软件本身的需求来判断。
20、 例如,QQ这类常用软件依赖的是vc2008运行库,如果系统中没有安装该版本的运行库,打开QQ时就会提示并行配置不正确。类似的情况也发生在一些游戏上,比如真三国无双6。这款游戏要求的运行库比较特殊,不仅需要vc2005运行库,还必须是日版的vc2005运行库。可能是因为日版的vc2005运行库包含了一些额外的内容,但具体原因并不明确。
21、 对于不同软件或游戏报出的并行配置不正确错误,解决方法也有所不同。如果是游戏,通常可以在游戏目录下的Redist文件夹中找到对应的vcredist安装程序,安装后一般可以解决问题。而对于其他软件,则需要查询其具体所需的vc++运行库版本,并下载安装相应版本的运行库。
22、 要彻底避免此类问题,最稳妥的办法是一次性安装从vc2005到vc2015的所有版本运行库。这样可以确保系统中包含所有常见的vc++运行库,从而大幅减少类似错误的发生几率。
23、 当然,如果已经完整安装了vc2005至vc2015的运行库,仍然遇到并行配置不正确的提示,并且确认软件不需要特殊版本的vc库,那么问题可能出在其他方面。例如,网络上提到的Windows Modules Installer服务异常等情况,这已超出了运行库缺失的范畴,不再属于本文讨论范围。

24、 有时在运行某些程序时,可能会遇到无法定位程序输入点的错误提示。这类问题通常会附带一个单词或一串字符,最后指出错误发生于某个文件上。实际上,这类错误往往与最后提到的那个文件有关,具体原因是该文件虽然名称正确,但其版本并不符合当前软件的需求。
25、 例如,无法定位输入点(……)于msvcp80.dll上,这意味着系统中确实存在名为msvcp80.dll的文件,但其内部版本号与程序实际需要的版本不匹配。为什么会这样?这主要是因为即使是同一个版本的VC库,也可能存在多个小版本差异,例如SP1之类的更新。假设某个软件要求使用带有SP1更新的vc2008运行库,而你的电脑上安装的是没有SP1更新的vc2008运行库。此时,尽管你的电脑中已经有了vc2008的msvcp90.dll文件,但由于其内部版本号与vc2008 sp1所需的msvcp90.dll版本不同,因此会导致无法定位输入点或者接下来将要讨论的应用程序无法正常启动等错误。
26、 这种情况在实践中很常见。比如,当有人在网上下载msvcp110文件并将其放入相应目录后,非但没能解决缺少msvcp110的问题,反而引发了更严重的应用程序错误。原因就在于网上下载的msvcp110文件的内部版本号可能与目标软件需求的版本不一致。
27、 以rpcs3这个PC模拟器为例(它开发多年但仍不能流畅运行大多数PS3游戏)。如果未安装相关运行库,在尝试打开rpcs3时,会收到缺少msvcp120.dll的提示。通过查询可以得知,这个软件需要vc2013运行库支持。于是从网络搜索并安装了vc2013后再次运行rpcs3.exe,却出现了新的错误:无法定位程序输入点fegetround于动态链接库msvcp120.dll上。这是怎么回事?仔细检查之前下载的vc2013安装程序,发现其描述中标注为Visual C++ 2013 Preview,难道正是这个preview版本导致了输入点错误?
28、 经过进一步调查得知,vc2013实际上有两个版本:一个是早期发布的preview版,另一个是正式版。下载并安装了正式版的vc2013后,再次运行rpcs3.exe,终于成功进入了熟悉的界面。这表明,对于类似问题,确保安装正确的运行库版本是非常重要的。

29、 五、应用程序无法正常启动/应用程序初始化失败
30、 这种错误相对复杂,但很多时候问题依然出在运行库上。可能是因为电脑缺少某个版本的 VC 运行库或 DirectX Redist,也可能是运行库内部版本不匹配,甚至还有可能是缺少 .NET Framework 运行库(安装程序通常以 DotNetFX 开头)。不过,缺少 .NET 运行库的情况较少见,且大多发生在 Windows 7 之前的系统中。这是因为从 Windows 8 开始,系统已经内置了 .NET Framework 的 4.0 或 4.5 版本,因此不会再因为缺少这些版本而报错。
31、 如果应用需要的是 3.5 之前的 .NET 库,打开时也不会弹出错误提示,而是会提示你安装 .NET Framework 3.5(包括 2.0 和 3.0)。此时只要有网络连接,点击下一步后,Windows 会自动下载并安装所需的 .NET 运行库。对于 Windows 7 之前的系统,若出现上述错误,可以尝试安装以 DotNetFX 开头的程序来排除 .NET 运行库的问题。而在 Windows 8 及更高版本系统中,这类错误基本与 .NET 运行库无关。
32、 当然,.NET 还有更高的 4.6 版本,这个版本需要手动安装。然而,需要 4.6 运行库的软件非常少,至少我还没有遇到过。或许只有使用 Visual Studio 2015 进行编程的人才会用到它吧。

33、 六、当缺少Java运行库时
34、 判断是否需要Java运行库(JRE环境)非常简单:只有以jar为扩展名的文件,或者主程序是jar文件时,才需要用到Java运行库。如果未安装JRE,jar文件将没有茶杯图标,也无法打开;在cmd中输入javaw时,系统会提示javaw不是可识别的命令;通过bat文件启动的Java程序,在双击bat文件时会出现闪退现象。

35、 七、其他运行库的缺失
36、 除了前面提到的主要运行库之外,还有一些较少用到的运行库也可能会影响软件的正常运行。例如 Microsoft XNA Framework、Microsoft Sync Framework 和 OpenAL 等,缺少它们可能会导致部分特定程序无法正常工作。
37、 此外,还有一些类似运行库功能的软件,如果未安装这些软件,同样会导致某些程序或游戏无法运行。例如 Rockstar Games 的 Social Club,若未安装此程序,则无法启动 GTA5;Ubisoft Game Launcher 也是其中之一,没有它就无法运行 Ubisoft 的正版游戏。类似的情况还包括 Steam、Origin 和 Games for Windows Live (GFWL) 等平台软件。虽然从严格意义上讲,它们并不是传统意义上的运行库,但对于一些正版游戏而言,它们的作用却不可或缺,几乎可以视作一种特殊的运行支持环境。

38、 八、最重要的运行库
39、 除了上述运行库之外,还有一项最大的运行库,那就是我们开机就运行的Windows系统。Windows为各类软件提供了基础运行环境,包括驱动支持和系统文件。任何exe程序的运行都离不开这个庞大的运行库——Windows。没有它,DirectX、vc++等其他运行库都将失去意义,一切无从谈起。