搜索

dll缺失问题——了解与修复应用程序接口

gecimao 发表于 2019-05-05 01:42 | 查看: | 回复:

  所谓API,全称为应用编程接口(Application Programming Interface),指的是软件系统的不同组成部分之间的衔接约定。随着近年来软件规模的不断庞大,经常需要将复杂的系统划分成一个个较小的组成部分,衔接这些组成部分的接口就是API。许多我们常见系统应用程序都是借由API接口来实现,对用户来说,其中最重要的就是程序与驱动程序间的API,像是图形显示、数据库、网络服务,这些能力综合作用就呈现了我们最爱的游戏、视频、音乐、上网等应用。

  应用程序接口是由一组数量众多、极其复杂的函数和副程序组成的,这些函数的表现形式,就是我们经常在Windows系统文件夹下所见的各种.dll文件(Dynamic Link Library,动态链接库)。它可让程序员做很多任务作,譬如“读取文件”、“显示菜单”以及“显示网页”等等,而整个操作系统的API可用来分配存储器或读取文件。由于API在目前操作系统中的重要性,所以一旦dll文件出现缺失等问题,就会让电脑部分或丧失功能,而这一问题也确实是用户经常遇到的,怎样解决“.DLL文件缺失”呢?我们以常见API相关dll来进行说明。

  对于游戏玩家来说,这个应用程序接口可能是接触最多的一个了,它的全称是Direct eXtension,缩写为DirectX或者DX。DirectX是由微软公司创建的专为一系列专为多媒体、游戏开发服务的应用程序接口,包括Direct3D、Direct2D、DirectCompute等等多个不同用途的分支部分,被广泛应用于基于Windows PC、XBOX One甚至PS4游戏的开发。

  DirectX在10版本之前相当人性化所有的版本都支持向下兼容,即新版本兼容旧版本,比如安装了DX9的电脑可以运行DX6编写的代码,这种情况直到DX10发生了改变。而正是因为这些版本的错综复杂,才导致了我们经常遇到的一些DLL文件缺失情况,比如著名的“缺少d3dx9_43.dll”(d3dx后的数字代表DirectX版本号)就是和DirectX有关的一个案例。所谓的d3dx9_43.dll其实就是DirectX的一个组件,而且还是众多组件中的一个,对于Windows系统来说,缺少任何一个组件都无法正常调用DirectX接口,也就无法进入游戏了。

  另外我们在运行大型游戏时偶尔遇到的“缺少xinput1_3.dll”,导致无法进入游戏也是DirectX的问题,xinput1_3.dll是DirectX接口控制模块的动态链接库文件,这些文件与前面的d3dx9_43.dll一样都存在于Windows目录下的System32文件夹下,一旦缺少都无法正常调用DX,解决方法仍旧是重装DirectX,而且由于这一文件的位置与版本比较确定,我们也可以直接下载一个xinput1_3.dll文件放置在System32文件夹下。

  对经验不足的玩家和DIYer来说,寻找和下载最合适的DirectX或者dll文件比较困难,那么可以尝试安装最新的游戏大作,而且最好是正版完全版,其中一般会提供常见的运行库,当然也就包括的比较全面的DirectX文件。

  Windows95系统推出之后,各种API就成为了Windows系统的基石。随着Windows系统的不断进化,相应API也不断扩展,但按照功能概括起来可以归纳为七大类:基础服务、图形设备接口、图形化用户界面、通用对话框链接库、通用控件链接库、Windows外壳、网络服务。在日常应用中,我们也经常会见到这些API相关dll文件的缺失的情况,并因此造成了很多应用问题。

  基础服务API提供了Windows系统可用的基础资源的访问接口,比如文件系统、外部设备、进程、线程以及注册表、错误处理机制等。这些功能接口位于kernel32.dll和advapi32.dll中,其中与kernel32.dll有关的错误最为常见。kernel32.dll是Windows系统中一个非常重要的32位动态链接库文件,它属于内核文件,控制着系统的内存管理、数据的输入输出操作和中断处理,启动后会占用一定的内存空间,并且进行锁定保护,不允许其他程序访问。当某个程序错误访问kernel32.dll所占用的内存保护区域,或者多个程序访问同一内存区域产生了冲突,内存、访问内存的程序出错等,都会造成kernel32.dll错误。解决kernel32.dll出错冲突,可通过手动方式修复,例如升级最新版本的显卡驱动程序、降低超频配件的频率等,而且由于这一问题的普遍性,很多安全软件也提供了一键修复功能。如果只是简单地kernel32.dll文件丢失,那么下载一个最新的原文件放置在system32文件夹下是最直接的方法。

  在软件方式无法解决后,我们就要考虑内存是否出现了硬件问题,可以用“记事本”打开根目录下的config.sys,并在其中插入命令行:DEVICE=C:\WINDOWS\HIMEM.SYS/TESTMEM:ON,然后在电脑重启时观察屏幕是否会显示“HIMEM has detected unreliable memory at address xxxxxx”(xxxxxx为内存出错地址),如果有相应信息则基本确定内存出了问题,除了更换内存外,还可以通过编辑config.sys或者文件,设置开机时隔离出错的内存模块,后者需要根据自己的内存配置和检测情况进行编辑,这里不再赘述。

  图形设备接口(GDI)为系统提供了输出图形内容到显示器、打印机以及其他外部设备的功能。这个API的接口位置在Windows下的gdi32.dll。由于GDI是负责图形设备接口的,所以它对于我们的Windows系统至关重要,一旦丢失了这个dll就会出现桌面图标无法删除、游戏无法打开、电脑无故蓝屏甚至桌面无法显示。解决这个dll丢失的方法也很简单,就是下载一个最新的gdi32.dll放在system32文件夹下。

  图形化用户界面(GUI)负责创建和管理屏幕和大多数基本控件,比如按钮,同时负责接收键盘和鼠标的输入。GUI在32位的Windows系统下是user32.dll负责,而64位的Windows中则是comctl32.dll,需要注意的是,病毒常常会对这一dll文件下手,木马软件也常常通过它来收集用户输入的信息,所以它报错很可能是操作系统受到有害软件侵袭的重要标志,最好不要直接拷贝一个了事,应进行一次全面杀毒。

  Windows外壳(Shell)不仅允许应用程序访问Windows外壳提供的功能,还对之有所改进和增强,也是用户界面API之一。它位于Windows下的shell32.dll中,而shell32.dll是很多病毒和木马的目标,一旦出现相应错误信息,最好在处理之外也进行一次全面的扫毒和杀毒。

本文链接:http://jonnutting.com/dongtailianjieku/261.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部