Tank37135文章

DLL的详细信息

DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”

可以理解为,应用程序是水,DLL是抽水机,我们要运输一部分水,而抽水机能很方便辅助完成任务,解放劳动力,运输水没有抽水机,将变得极为不便

应用程序(exe)开发中,有很多程序会使用相同的库,相同的资源,为了节约人力资源,将部分功能变为扩展,就组成的应用扩展程序(DLL),这些DLL可以供不同程序一起使用,极大节约了内存

用更专业一点的知识将,DLL是函数库,当程序想要某个函数时,会调用对应的DLL

一些作为 DLL 实现的文件(本质是DLL)

  • ActiveX 控件 (.ocx) 文件

    可以被网页、桌面应用程序或 Office 软件调用,常用于 Web 插件、文件上传、在线编辑、视频播放等交互功能,多用于Windows界面组件和网站在线办公
  • 控制面板 (.cpl) 文件

    是Windows系统中控制面板工具的载体,也就是说,控制面板中的每一个项,都是一个DLL,用户访问受限,Windows文件保护机制防止其被非法篡改,主要用于控制面板的硬件属性修改,网络修改等
  • 设备驱动程序 (.drv) 文件

    就是驱动文件之一用于操作系统和硬件之间的参数、命令的传递等。没有这个文件,系统不认识硬件,自然不能控制硬件或被硬件控制

DLL优点

  1. 高效性

    因为DLL文件可以公共使用,多个exe可以使用同一个DLL,一个exe也可以同时使用多个DLL,又DLL是函数库,所以极大提高了代码的利用率,也极大减少了程序员的劳动量,还为你的电脑节约了内存
  2. 模块化

    比如,你有一个软件需要多个语音的版本,DLL则为你提供一个框架,帮助你减少开发量,更方便模式化开发和构建完整体系
  3. 可维护性

    DLL不保存在单独exe中,可以单独被更新或改变,而且有很多exe共用DLL,所以当DLL更新是,所以依赖此DLL的exe都能直接更新和维护,所以DLL使维护更便捷,也是为什么当系统风格改变时,使用默认窗口样式的软件也会瞬间更新的原因之一

DLL的缺点

由于DLL文件可以被多个程序共用,所以当这个DLL文件缺少或者损坏又或者更新后不兼容,就会导致原本依赖此DLL的应用程序当场“宕机”,使应用程序变得不知所措,导致他无法运行,不过也可以在开发时使用独立DLL而不是公共DLL来解决这个问题

不过在引入NET框架之后,大多数依赖性问题都已经通过使用程序集解决了,现代电脑一般都安装了NET框架,如果没有,则建议安装,链接见下部分

DLL修复缺失

定向修补

定向修补指缺啥补啥,当触发错误时下载对应的DLL文件,然后将他们复制到C:\Windows\SysWOW64(32位版),或者复制到C:\Windows\System32(64位版),是的,你没有看错,就是这样,因为SysWOW64是 "Windows-on-Windows 64-bit" 的缩写,表示在 64 位系统上运行 32 位应用程序的子系统。而System32是 Windows 系统中最早的系统目录名称,最初用于存放 32 位 DLL 文件。为了保持向后兼容性,微软在 64 位系统中继续沿用此目录名称,但存放的是 64 位 DLL 文件。所以这个命名有点违反直觉

下面推荐几个可信的DLL下载地址
DLL files
DLL kit
DriversCloud

注:DLL文件一定找可信来源,否则可能导致软件无法运行,甚至崩溃

批量修补

批量修补只通过扫描电脑来发现所有缺失或损坏的DLL并且修复补充操作,一般由专业软件进行

推荐几个免费资源
visual C++运行库下载
DirectX修复工具
net框架下载
4DDiG DLL及运行库扫描修复软件破解版


如果你的软件不是便携式软件或者破解软件,也可以尝试重新安装软件,因为有点软件会知道重新下载需要的DLL

一些常见的因DLL错误导致的错误对照

错误代码 对应文件
0x7E 或 0xC0000135 MSVCR110.dll、MSVCP120.dll、VCRUNTIME140.dll
0xC0000005 kernel32.dll、user32.dll、advapi32.dll
0x8007007E xinput1_3.dll、d3dx9_43.dll
0x80004005 有多个DLL存在问题,建议批量检查或重装
0x80070057 msxml.dll 或 msvcrt.dll

如果修复对应文件仍然无法解决错误,建议网络搜索或者使用批量扫描修复

开发者资源

微软官网

暂时不多讲