详细介绍dll文件是什么格式(详细介绍dll文件是什么)
详细介绍dll文件是什么格式(详细介绍dll文件是什么),本文通过数据整理汇集了详细介绍dll文件是什么格式(详细介绍dll文件是什么)相关信息,下面一起看看。
DLL是动态链接库的缩写,意思是动态链接库。通常,DLL文件存储在C:WindowsSystem目录中。DLL是一个包含代码和数据的库,可以被多个程序同时使用。在Windows中,很多应用程序并不是完整的可执行文件,它们被分成一些相对独立的动态链接库,即DLL文件,放在系统中。当我们执行一个程序时,会调用相应的DLL文件。一个应用程序可以有多个DLL文件,一个DLL文件可以由几个应用程序共享。这种DLL文件称为共享DLL文件。
例如,在Windows操作系统中,Comdlg32 DLL执行与对话框相关的常见功能。因此,每个程序都可以使用这个DLL中包含的函数来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。
通过使用DLL,程序可以模块化,由相对独立的组件组成。例如,会计程序可以按模块出售。每个模块都可以在运行时加载到主程序中(如果安装了相应的模块)。由于模块之间相互独立,程序的加载速度更快,只有在请求相应的功能时才加载模块。
此外,在不影响程序其他部分的情况下,将更新应用到每个模块也更容易。例如,您可能有一个工资计算程序,税率每年都在变化。在DLL中隔离这些更改后,您可以应用更新,而无需重新构建或安装整个程序。
某些文件在Windows操作系统中实现为dll
1.ActiveX控件(。ocx)文件
ActiveX控件的一个例子是日历控件,它使您能够从日历中选择日期。
2.控制面板(。cpl)文件
cpl文件的一个例子是位于控制面板中的项目。每一项都是一个专用的DLL。
3.设备驱动程序(。drv)文件
设备驱动程序的一个例子是控制打印机打印的打印机驱动程序。
使用程序DLL的优点
1少用资源。
当多个程序使用同一个函数库时,DLL可以减少加载到磁盘和物理内存中的重复代码。这不仅会极大地影响在前台运行的程序,还会影响在Windows操作系统上运行的其他程序。
2推广模块化架构
DLL有助于促进模块化程序的开发。这可以帮助您开发需要多语言版本的大型程序或需要模块化架构的程序。模块化程序的一个例子是具有多个模块的会计程序,这些模块可以在运行时动态加载。
3简化部署和安装
当DLL中的函数需要更新或修复时,部署和安装DLL不需要重新建立程序和DLL之间的链接。此外,如果多个程序使用同一个DLL,那么多个程序将受益于此更新或修复。当您使用定期更新或修复的第三方DLL时,此问题可能会更频繁地出现。
1.如何知道一个应用程序使用了哪些DLL文件?
右键单击应用程序,并从快捷菜单中选择“快速查看”命令。您将在随后出现的快速查看窗口的导入表列中看到它对DLL文件的使用。
2.我怎么知道DLL文件被几个程序使用?
运行Regedit,输入HKEY _ local _ machinesoftwarmicrosrftwindows CurrentVersionsharedlls子键,所有DLL文件和相关数据都会显示在右边的窗口中,其中数据右边括号中的数字表示被几个程序使用,(2)被两个程序使用,(0)没有被任何程序使用,可以删除。
3.DLL文件丢失怎么解决?
有时候在卸载文件时,会提醒你删除一个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件的时候,有可能误删除了共享的DLL文件。DLL文件一旦丢失,如果能确定其名称,就可以在Sysbckup(系统备份文件夹)中找到,并复制到系统文件夹中。
如果这样不行,电脑启动时总是会出现“***dll文件丢失…”的提示框。你可以在“开始/运行”中运行Msconfig。进入系统配置实用程序对话框后,点击选择“System.ini”选项卡,找出缺失的DLL文件,使其不会被选中。这样启动时就不会有错误提示了。
rundll的作用是通过命令行调用Windows的动态链接库。
Rundll32.exe和Rundll.exe的区别在于,前者是32位链接库,而后者是16位链接库。Rundll32.exe是一个专门用于调用dll文件的程序。
如果使用Win98,rundll32.exe一般存在于Windows目录下;
如果使用WinXP,rundll32.exe一般存在于WindowsSystem32目录下。
如果它在另一个目录中,它可能是一个特洛伊木马程序,将自己伪装成rundll32.exe。
DLL故障排除工具
您可以使用几种工具来帮助您解决DLL问题。这里有一些工具。
1、依赖行者
依赖项遍历工具可以递归扫描以找到程序使用的所有依赖dll。当您在Dependency Walker中打开程序时,Dependency Walker会执行以下检查:
依赖项遍历器检查DLL是否丢失。依赖项遍历器检查是否有无效的程序文件或DLL。Dependency Walker检查导入函数和导出函数是否匹配。依赖项遍历器检查是否存在循环依赖项错误。Dependency Walker检查是否存在对于另一个不同的操作系统无效的模块。通过使用Dependency Walker,您可以记录程序使用的所有dll。这可能有助于避免和纠正将来可能出现的DLL问题。安装Microsoft Visual Studio 6.0时,Dependency Walker将位于以下目录中:drive program files Microsoft Visual Studio common tools。
2、DLL通用问题求解器
通用问题解决程序(dups)工具用于审核、比较、记录和显示DLL信息。下表描述了构成DUPS工具的实用程序:
Dlister.exe:该实用程序枚举计算机中的所有dll,并将这些信息记录在文本文件或数据库文件中。Dcomp.exe:该实用工具比较两个文本文件中列出的dll,并生成包含差异的第三个文本文件。Dtxt2DB.exe:这个实用程序将使用Dlister.exe实用程序和Dcomp.exe实用程序创建的文本文件加载到dllHell数据库中。DlgDtxt2DB.exe:该实用程序提供了Dtxt2DB.exe实用程序的图形用户界面(GUI)版本。DLL的类型
在应用程序中加载DLL时,可以使用两种链接方法来调用导出的DLL函数。这两种链接方法是加载时动态链接和运行时动态链接。
1.加载期间的动态链接
在加载时的动态链接中,应用程序显式调用导出的DLL函数,就像本地函数一样。要在加载时使用动态链接,请提供头文件(。h)并导入库文件(。lib)来编译和链接应用程序。这样做时,链接器将为系统提供加载DLL所需的信息,并在加载时解析导出的DLL函数的位置。
2.运行时的动态链接
在运行时动态链接中,应用程序调用LoadLibrary函数或LoadLibraryEx函数在运行时加载DLL。成功加载DLL后,可以使用GetProcAddress函数获取要调用的导出DLL函数的地址。使用运行时动态链接时,不需要导入库文件。
Win32 DLL的特征
Win32 DLL和Win16 DLL差别很大,主要是操作系统的设计思想决定的。一方面,程序入口点函数和出口点函数(LibMain和WEP)在Win16 DLL中分别实现;在Win32 DLL中,它由同一个函数DLLMain实现。每当进程或线程加载和卸载DLL时,都会调用此函数。它的原型是
BOOLWINAPIDllMain(hinstanceinstdll,DWORDfdwReason,LPVOIDlpvReserved);第一个参数指示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文件有进一步的了解。
这个网站是个人知识管理的网络存储空间。所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请一键举报。
更多详细介绍dll文件是什么格式(详细介绍dll文件是什么)相关信息请关注本站,本文仅仅做为展示!