DLL

  DLL(Dynamic Link Library)文件为动态连接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并非一个完整的 可执行文件,它们被分割成一些相对独立的 动态连接库,即DLL文件,放置于系统中。当咱们执行某一个 程序时,相应的DLL文件就会被调用。一个应用程序可以使用多个DLL文件,一个DLL文件也可能被不一样的应用程序使用,这样的DLL文件被称为共享DLL文件。  [1] 

 

意义

编辑
DLL文件中存放的是各种程序的函数(子过程)实现过程,当程序须要调用函数时须要先载入DLL,而后取得函数的地址,最后进行调用。使用DLL文件的好处是程序不须要在运行之初加载全部代码,只有在程序须要某个函数的时候才从DLL中取出。另外,使用DLL文件还能够减少程序的体积。

做用

编辑
在  Windows操做系统中,每一个程序均可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。
经过使用 DLL,程序能够实现模块化,由相对独立的 组件组成。例如,一个记帐程序能够按模块来销售。能够在运行时将各个模块加载到主程序中(若是安装了相应模块)。由于模块是彼此独立的,因此程序的加载速度更快,并且模块只在相应的功能被请求时才加载。
此外,能够更为容易地将更新应用于各个模块,而不会影响该程序的其余部分。例如,您可能具备一个工资计算程序,而税率每一年都会更改。当这些更改被隔离到 DLL 中之后,您无需从新生成或安装整个程序就能够应用更新。

常见种类

编辑
Windows操做系统中的一些做为 DLL 实现的文件
·ActiveX 控件 (.ocx) 文件
ActiveX控件的一个示例是日历控件,它使您能够从日历中选择日期。
·控制面板 (.cpl) 文件
.cpl 文件的一个示例是位于控制面板中的项。每一个项都是一个专用 DLL。
·设备 驱动程序(.drv) 文件
设备驱动程序的一个示例是控制打印到打印机的 打印机驱动程序

特色

编辑
1、 使用较少的资源
当多个程序使用同一个函数库时,DLL 能够减小在磁盘和 物理内存中加载的代码的重复量。这不只能够大大影响在前台运行的程序,并且能够大大影响其余在 Windows操做系统上运行的程序。
2、 推广模块式体系结构
DLL 有助于促进模块式程序的开发。这能够帮助您开发要求提供多个语言版本的大型程序或要求具备模块式 体系结构的程序。模块式程序的一个示例是具备多个能够在运行时动态加载的模块的计账程序。
3、 简化 部署和安装
当 DLL 中的函数须要更新或修复时,部署和安装 DLL 不要求从新创建程序与该 DLL 的连接。此外,若是多个程序使用同一个 DLL,那么多个程序都将从该更新或修复中获益。当您使用按期更新或修复的第三方 DLL 时,此问题可能会更频繁地出现。
一、如何了解某应用程序使用哪些DLL文件
右键单击该应用程序并选择 快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的状况。
二、如何知道DLL文件被几个程序使用
运行 Regedit,进入HKEY_LOCAL_MACHINE\Software\Microsrft\Windows\CurrentVersion\SharedDlls子键查看,其右边窗口中就显示了全部DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,能够将其删除。
三、如何解决DLL文件丢失的状况
有时在 卸载文件时会提醒你删除某个DLL文件可能会影响其余应用程序的运行。因此当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的状况,若是你能肯定其名称,能够在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。若是这样不行,在电脑启动时又老是出现“***dll文件丢失……”的提示框,你能够在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框之后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。
rundll的功能是以命令列的方式呼叫Windows的动态连接库。
Rundll32. exe与Rundll.exe的区别就在于前者是用于32位的链结库,后者是用于16位的链结库。 rundll32.exe是专门用来调用dll文件的程序。
若是用的是Win98,rundll32.exe通常存在于Windows目录下;
若是用的Win XP、Win7,rundll32.exe通常存在于Windows\System32目录下。
如果在其它目录,就多是一个 木马程序,它会假装成rundll32.exe。

连接方法

编辑
当您在应用程序中加载 DLL 时,可使用两种连接方法来调用导出的 DLL 函数。这两种连接方法是加载时 动态连接和运行时动态连接。
在运行时动态连接中,应用程序调用 LoadLibrary 函数或 LoadLibraryEx 函数以在运行时加载 DLL。成功加载  DLL 后,可使用 GetProcAddress 函数得到要调用的导出的 DLL 函数的地址。在使用运行时动态连接时,无需使用 导入库文件。
Win32 DLL的特色
Win32 DLL与 Win16 DLL有很大的区别,这主要是由操做系统的设计思想决定的。一方面,在Win16 DLL中程序 入口点函数和出口点函数(LibMain和WEP)是分别实现的;而在Win32 DLL中却由同一函数DLLMain来实现。不管什么时候,当一个进程或 线程载入和 卸载DLL时,都要调用该函数,它的原型是
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved);
其中,第一个参数表示DLL的实例句柄;第三个参数系统保留;这里主要介绍一下第二个参数,它有四个可能的值:DLL_PROCESS_ATTACH(进程载入),DLL_THREAD_ATTACH( 线程载入),DLL_THREAD_DETACH(线程 卸载),DLL_PROCESS_DETACH(进程卸载),在DLLMain函数中能够对传递进来的这个参数的值进行判别,并根据不一样的 参数值对DLL进行必要的初始化或清理工做。举个例子来讲,当有一个进程载入一个DLL时,系统分派给DLL的第二个参数为DLL_PROCESS_ATTACH,这时,你能够根据这个参数初始化特定的数据。另外一方面,在Win16环境下,全部应用程序都在同一 地址空间;而在Win32环境下,全部应用程序都有本身的私有空间,每一个进程的空间都是相互独立的,这减小了应用程序间的相互影响,但同时也增长了编程的难度。你们知道,在Win16环境中,DLL的全局数据对每一个载入它的进程来讲都是相同的;而在Win32环境中,状况却发生了变化,当进程在载入DLL时,系统自动把DLL 地址映射到该进程的私有空间,并且也复制该DLL的全局数据的一份拷贝到该进程空间,也就是说每一个进程所拥有的相同的DLL的全局数据其值却并不必定是相同的。所以,在Win32环境下要想在多个进程中共享数据,就必须进行必要的设置。亦即把这些须要共享的数据分离出来,放置在一个独立的数据段里,并把该段的属性设置为共享。

故障排除

编辑
可使用多个工具来帮助您解决 DLL 问题。如下是其中的部分工具。
Dependency Walker
Dependency Walker 工具能够递归扫描以寻找程序所使用的全部依赖 DLL。当您在 Dependency Walker 中打开程序时,Dependency Walker 会执行下列检查:
Dependency Walker 检查是否丢失 DLL。
Dependency Walker 检查是否存在无效的 程序文件或 DLL。
Dependency Walker 检查导入函数和导出函数是否匹配。
Dependency Walker 检查是否存在循环依赖性错误。
Dependency Walker 检查是否存在因为针对另外一不一样操做系统而无效的模块。
经过使用 Dependency Walker,您能够记录程序使用的全部 DLL。这可能有助于避免和更正未来可能发生的 DLL 问题。当您安装 Microsoft Visual Studio 6.0 时,Dependency Walker 将位于如下目录中:
drive\Program Files\Microsoft Visual Studio\Common\Tools
DLL Universal Problem Solver
DLL Universal Problem Solver (DUPS) 工具用于审核、比较、记录和显示 DLL 信息。下表说明了组成 DUPS 工具的实用工具:
Dlister.exe:该实用工具枚举计算机中的全部 DLL,而且将此信息记录到一个文本文件或数据库文件中。
Dcomp.exe:该实用工具比较在两个文本文件中列出的 DLL,并产生包含差别的第三个文本文件。
Dtxt2DB.exe:该实用工具将经过使用 Dlister.exe 实用工具和 Dcomp.exe 实用工具建立的文本文件加载到 dllHell数据库中。
DlgDtxt2DB.exe:该实用工具提供 Dtxt2DB.exe 实用工具的 图形用户界面(GUI) 版本。
DLL影响

文件修复

编辑
一、用Windows系统盘功能进行文件修复;
二、若在此以前有一键备份过,能够从新还原;
三、从网上下载系统文件而后覆盖到原文件夹里;
相关文章
相关标签/搜索