DLL文件究竟是如何工作的?它们似乎有很多,但我不知道它们是什么,也不知道它们是如何工作的。

那么,他们是怎么回事?


当前回答

什么是DLL?

DLL文件是二进制文件,可以包含可执行代码和资源,如图像等。与应用程序不同,它们不能直接执行,但应用程序将在需要时加载它们(或在启动期间一次性加载)。

它们重要吗?

大多数应用程序将在启动时加载所需的DLL文件。如果没有找到其中任何一个,系统将根本无法启动该进程。

DLL文件可能需要其他DLL文件

与应用程序需要DLL文件一样,DLL文件本身也可能依赖于其他DLL文件。如果在依赖链中没有找到其中一个DLL文件,则应用程序将无法加载。使用任何依赖行走器工具(如依赖行走器)都可以很容易地进行调试。

系统文件夹中有很多这样的文件

大多数系统功能以DLL文件的形式公开给用户程序,因为它们是共享代码/资源的标准形式。每个功能分别保存在不同的DLL文件中,以便只加载所需的DLL文件,从而减少对系统的内存限制。

已安装的应用程序也使用DLL文件

DLL文件也成为一种物理上分离功能的形式,如上所述。好的应用程序还尽量在绝对需要DLL文件时才加载DLL文件,这样可以减少内存需求。这也会导致应用程序附带大量DLL文件。

DLL 地狱

但是,有时当共享DLL文件与需要它们的程序之间的版本不匹配时,系统升级通常会破坏其他程序。系统检查点和DLL缓存等是M$解决这个问题的举措。. net平台可能根本不会面临这个问题。

我们如何知道DLL文件中有什么?

您必须使用像DUMPBIN或Dependency Walker这样的外部工具,它不仅会显示DLL文件中包含哪些公开可见的函数(称为导出),还会显示它需要哪些其他DLL文件,以及该DLL文件依赖于哪些从这些DLL文件中导出。

我们如何创建/使用它们?

请参考供应商提供的编程文档。c++,请参考MSDN中的LoadLibrary。

其他回答

DLL文件包含一个导出表,它是一个可以由调用程序查找的符号列表。这些符号通常是具有C调用约定的函数(__stcall)。导出表还包含函数的地址。

有了这些信息,调用程序就可以调用DLL中的函数,即使它在编译时没有访问DLL的权限。

介绍动态链接库有更多的信息。

什么是DLL?

DLL文件是二进制文件,可以包含可执行代码和资源,如图像等。与应用程序不同,它们不能直接执行,但应用程序将在需要时加载它们(或在启动期间一次性加载)。

它们重要吗?

大多数应用程序将在启动时加载所需的DLL文件。如果没有找到其中任何一个,系统将根本无法启动该进程。

DLL文件可能需要其他DLL文件

与应用程序需要DLL文件一样,DLL文件本身也可能依赖于其他DLL文件。如果在依赖链中没有找到其中一个DLL文件,则应用程序将无法加载。使用任何依赖行走器工具(如依赖行走器)都可以很容易地进行调试。

系统文件夹中有很多这样的文件

大多数系统功能以DLL文件的形式公开给用户程序,因为它们是共享代码/资源的标准形式。每个功能分别保存在不同的DLL文件中,以便只加载所需的DLL文件,从而减少对系统的内存限制。

已安装的应用程序也使用DLL文件

DLL文件也成为一种物理上分离功能的形式,如上所述。好的应用程序还尽量在绝对需要DLL文件时才加载DLL文件,这样可以减少内存需求。这也会导致应用程序附带大量DLL文件。

DLL 地狱

但是,有时当共享DLL文件与需要它们的程序之间的版本不匹配时,系统升级通常会破坏其他程序。系统检查点和DLL缓存等是M$解决这个问题的举措。. net平台可能根本不会面临这个问题。

我们如何知道DLL文件中有什么?

您必须使用像DUMPBIN或Dependency Walker这样的外部工具,它不仅会显示DLL文件中包含哪些公开可见的函数(称为导出),还会显示它需要哪些其他DLL文件,以及该DLL文件依赖于哪些从这些DLL文件中导出。

我们如何创建/使用它们?

请参考供应商提供的编程文档。c++,请参考MSDN中的LoadLibrary。

dll(动态链接库)和SLs(共享库,在UNIX下是等价的)只是可执行代码的库,可以在加载时动态链接到可执行文件。

静态库在编译时插入到可执行文件中,并从那时开始固定。它们增加了可执行文件的大小,并且不能共享。

动态库有以下优点:

1/它们是在运行时而不是编译时加载的,所以它们可以独立于可执行文件进行更新(你在windows中看到的所有漂亮的窗口和对话框都来自dll,所以你的应用程序的外观可以改变,而不必重写它)。

2/因为它们是独立的,所以代码可以在多个可执行文件之间共享——这可以节省内存,因为如果你运行100个应用程序,使用一个DLL,那么内存中可能只有一个DLL副本。

它们的主要缺点是优点#1 -让dll独立于应用程序更改可能会导致应用程序停止工作或开始以一种奇怪的方式运行。在Windows下,DLL版本控制往往不能很好地管理,这就导致了一个古怪的名字“DLL地狱”。

dll(动态链接库)包含一个或多个应用程序或服务使用的资源。它们可以包含类、图标、字符串、对象、接口以及开发人员需要存储的除UI之外的几乎任何东西。

DLL是一种文件扩展名,被称为“动态链接库”文件格式,用于保存Windows程序的多个代码和过程。软件和游戏基于DLL文件运行;DLL文件被创建,以便多个应用程序可以同时使用它们的信息。

如果您想获得更多关于DLL文件的信息或面临任何错误,请阅读下面的帖子。 https://www.bouncegeek.com/fix-dll-errors-windows-586985/