windows - 什么是 DLL 文件,它们是如何工作的?
什么是 DLL?
DLL 文件是二进制文件,可以包含可执行代码和图像等资源。与应用程序不同,这些文件不能直接执行,但应用程序会在需要时加载它们(或在启动期间一次性加载)。
它们重要吗?
大多数应用程序将在启动时加载它们所需的 DLL 文件。如果没有找到其中任何一个,系统将根本无法启动该过程。
DLL 文件可能需要其他 DLL 文件
与应用程序需要 DLL 文件一样,DLL 文件可能依赖于其他 DLL 文件本身。如果在依赖链中找不到这些 DLL 文件之一,则不会加载应用程序。这可以使用任何依赖遍历器工具轻松调试,例如Dependency Walker。
系统文件夹里有这么多
大多数系统功能以 DLL 文件的形式向用户程序公开,因为它们是共享代码/资源的标准形式。每个功能都单独保存在不同的 DLL 文件中,以便只加载所需的 DLL 文件,从而减少系统的内存限制。
已安装的应用程序也使用 DLL 文件
如上所述,DLL 文件也成为物理分离功能的一种形式。好的应用程序也会尝试在绝对需要之前不加载 DLL 文件,从而减少内存需求。这也会导致应用程序附带大量 DLL 文件。
DLL 地狱
然而,当共享 DLL 文件和需要它们的程序之间存在版本不匹配时,系统升级经常会破坏其他程序。系统检查点和DLL缓存等一直是M$解决这个问题的举措。.NET 平台可能根本不会遇到这个问题。
我们如何知道 DLL 文件中的内容?
您必须使用像DUMPBIN或 Dependency Walker 这样的外部工具,它不仅可以显示 DLL 文件中包含哪些公开可见的函数(称为导出),还可以显示它需要哪些其他 DLL 文件以及从这些 DLL 文件中导出哪些该 DLL 文件是依赖的。
我们如何创建/使用它们?
请参阅供应商提供的编程文档。对于 C++,请参阅 MSDN 中的LoadLibrary。