什么是DLL?



Answers

DLL =动态链接库

这个名字实际上完全描述了他们的成就。

图书馆

让您将特定问题域的代码隔离到单个位置。 然后在多个应用程序中共享这个。 该库可随时换成另一个来修复错误或添加功能。

链接

您可以将库“链接”到应用程序,以便库中的逻辑不会直接编译到应用程序中。

动态

该库可以按需加载。 OS不会将庞大的单个EXE加载到内存中,而只能加载所需的部分。 另外,如果应用程序之间共享DLL,操作系统可以优化库的加载方式并在应用程序之间共享。

Question

这可能是一个很难理解的问题,但是在当今Web应用程序开发的世界中,许多程序员不需要处理dll的很多内容,因此也不必费心去了解它们的用途。

那么,什么是DLL?

  1. 它是干什么用的?
  2. 它是如何工作的?
  3. 你如何创建一个?
  4. 在什么情况下创建一个合适的?

我被告知dll被用来存储函数库,但除此之外我不太了解。 希望这里的某个人能够启发我,这样我就可以终止不知道我的Windows目录中的所有这些.dll文件在做什么。




DLL =动态加载链接库。 正如您所知,它基本上是一组函数,C ++类和/或全局变量。 您可以静态加载DLL(即,操作系统在程序启动时自动加载它)或动态加载(程序显式加载它),此时DLL中的函数和东西可用于您的程序。

创建一个类似于创建一个EXE,除了不需要是一个main()函数。 有链接器指令告诉链接器创建一个DLL而不是EXE。

你想要做到这一点的主要原因是将一些代码封装在一个地方,并从多个exe文件中使用它,而不是将代码链接到每个代码。

一个有点历史的原因是,你的exe可以更小,因为一些代码实际位于不同的文件中。 这意味着您的exe占用的内存空间可能会更小。 在现代系统上,这个问题不像以前那么严重,尽管它在Windows Mobile上仍然可能是个问题。




动态链接库。

给你一个例子,如果你有其他人的DLL加载到你的应用程序中,你可以使用它的一些编程。

您可以加载一个生成总是以“5”开头的随机数的DLL。

在你的程序中,你可以调用CrazyDLL.GenerateRandomNumbersSorta(),它会返回数字。

对于一个真实世界的例子,我有一个组合了4个文本框的DLL(你可以使用它们来输入IP地址),它自动只接受小于256的数字,并处理按退格键跳转到上一个文本框。

我已经创建了一个包含该代码的DLL,现在我只需拖放更多的IP地址文本集合,而不必一遍又一遍地重复所有的代码。

同一个DLL还具有将IP地址转换为十六进制字符串的功能以及其他有用的代码。




维基百科页面上的DLL几乎包含了你想要的所有信息。

动态链接库(也可以不带连字符编写)或DLL是微软在Microsoft Windows和OS / 2操作系统中实现共享库的概念。 这些库通常具有文件扩展名DLL,OCX(用于包含ActiveX控件的库)或DRV(用于传统系统驱动程序)。 DLL的文件格式与Windows EXE文件相同 - 即32位和64位Windows的可移植可执行文件(PE),以及16位Windows的新可执行文件(NE)。 和EXE一样,DLL可以以任意组合包含代码,数据和资源。 从广义上讲,任何具有相同文件格式的数据文件都可以称为资源DLL。




Links



Tags