这可能是一个非常初学者的问题,但在今天的Web应用程序开发世界中,许多程序员不需要太多处理DLL,因此也不会去了解它们的目的。
那么什么是DLL?
- 它的作用是什么?
- 它如何工作?
- 如何创建一个DLL?
- 在哪些情况下适合创建一个DLL?
我被告知,DLL用于存储函数库,但除此之外我并不了解更多。希望有人能在这里为我提供启示,这样我就可以终止对Windows目录中所有.dll文件做什么的困惑了。
这可能是一个非常初学者的问题,但在今天的Web应用程序开发世界中,许多程序员不需要太多处理DLL,因此也不会去了解它们的目的。
那么什么是DLL?
我被告知,DLL用于存储函数库,但除此之外我并不了解更多。希望有人能在这里为我提供启示,这样我就可以终止对Windows目录中所有.dll文件做什么的困惑了。
DLL是动态链接库。它是一组代码和/或数据,可供多个应用程序(或其他库/模块)使用。
例如,处理文件、使用GUI组件等常见方法可在库中提供,因此多个应用程序可以使用相同的功能。这不仅减少了多次构建相同内容的需求,而且还确保了例如公共对话框在应用程序之间的一致性。
库可以在运行时加载,从而在不同的并发应用程序之间共享。这称为动态链接。
在某些情况下,库可以包含在应用程序本身中。这称为静态链接。静态链接使部署变得更加容易,但代价是灵活性不足,因为每个应用程序都将加载DLL的相同副本。
然而,静态链接并不总是可行的。例如,无法静态链接.NET应用程序。用户必须拥有.NET库才能运行.NET应用程序,并且库(或在.NET中称为程序集)是在运行时加载的。
DLL由用于创建应用程序的相同工具创建。具体细节非常依赖于所使用的工具。
DLL = 动态链接库
这个名称实际上非常描述它们所完成的内容。
库
让您将特定问题域的代码隔离到单个位置中。然后在多个应用程序之间共享此库。可以随时替换另一个库以修复错误或添加功能。
链接
您可以将库“链接”到应用程序中,以使库中的逻辑不直接编译到应用程序中。
动态
可以按需加载库。操作系统可以仅加载所需部分,而不是将一个庞大的单个EXE加载到内存中。而且如果DLL在应用程序之间共享,则操作系统可以优化如何加载库并在应用程序之间共享它。
DLL(动态链接库)文件可以描述为小的“子程序”,旨在帮助更大的程序运行良好。它们提供了一种将各种硬件和软件资源(在其运行时会话的各个点上)链接到它们所基于的主可执行程序的方式,根据需要随时处理。这消除了在首次运行程序时将与主可执行程序有关的所有内容加载到计算机的RAM(随机访问存储器)中的需求。
DLL所携带的软件资源包括那些并不真正需要保持程序运行的代码:也就是那些仅需要在给定计算会话期间某些时候调用的功能,实际上甚至可能根本不需要被调用。当第一次运行程序时将这些功能(对于一个给定的程序可能有很多)加载到计算机的RAM中,然后在会话期间保持它们存在会浪费RAM空间,而RAM空间被认为是非常宝贵的。
一个重大进步:
开发DLLs是计算领域的重大进步,因为在DLLs可用之前,与程序有关的所有东西(包括很少使用的功能)必须在程序首次加载时加载到RAM中。这导致计算非常低效,各种程序的速度变慢。同时运行甚至只有几个简单程序也非常困难,因为会给RAM带来不小的负担。
考虑因素:
DLL通常是特定于版本的。那些适用于版本1的程序(或编程语言,如果可能的话)的DLL可能与版本2不兼容。一般规则是旧版本中的DLL往往无法与新版本良好地配合使用,但新版本的程序或编程语言的DLL通常可以与旧版本良好地配合使用。