DLL 是否可执行?

DLL 是否可执行?

术语和分类的问题。

DLL 是“可执行文件”吗?

http://en.wikipedia.org/wiki/Executable

答案1

DLL 文件本身不是可执行文件,尽管它可能包含可执行代码。DLL(动态链接库)包含可供其他程序使用的代码、数据、资源等。您需要一个 EXE 文件,以便操作系统执行 DLL 文件中的代码,例如 Windows 中的“RUNDLL.EXE”或“RUNDLL32.exe”。

答案2

根据维基百科文章,DLL 是一个可执行文件。

在计算中,可执行文件使计算机“根据编码指令执行指示的任务”,而不是必须由程序解析才有意义的数据文件。

根据这个定义,DLL 是可执行文件,因为它包含执行任务的编码指令。

确切的解释取决于用途;虽然该术语通常仅指机器代码文件,但在防御计算机病毒的背景下,所有导致潜在危险指令执行的文件(包括脚本)都被方便地归为一类。

对于 DLL 来说也是如此。

但有些人可能会认为 DLL 无法自行运行,它总是需要一些程序来加载 DLL 并调用 DLL 导出的函数,因此从严格意义上讲,您可能还会说只有 exe 文件(如果在 Windows 上)才是可执行文件。正如维基百科所说...

确切的解释取决于用途

如果在给定上下文中不清楚是否包含 DLL,我会尝试使用更清晰的术语或短语,并避免谈论可执行文件。即使在我的工作中(软件开发人员),我也不确定每个人都会同意“可执行文件”也意味着 DLL。

答案3

不是,即使它们使用类似的文件格式,动态链接库是一种存储位置,你可以将任何对可执行文件有用的内容放在这里。可执行文件将链接到 DLL 并加载物件代码、图标以及许多其他东西。

答案4

维基百科文章并不具有权威性。维基百科需要其他权威机构。关于可执行文件相对于 DLL 的定义,一个好的权威机构是 Microsoft 文档,例如动态链接库(动态链接库) - Win32 应用 | Microsoft Docs

最初在动态链接出现之前,只有静态链接。编译器(例如 C 和 C++ 编译器)会为读入的每个源文件生成一个目标文件。它们现在仍然这样做。然后,这些目标文件被链接在一起形成一个可执行文件。但可执行文件是由一个或多个目标文件创建的。为方便起见,可以将目标文件放入可由链接编辑器静态链接的库中。动态链接库是静态库的扩展,其中链接编辑器使用库文件,但可执行代码存在于单独的文件中以供执行期间使用。因此,动态链接库被设计为包含可执行代码,就像直接或间接调用其使用的所有 DLL 的主可执行文件一样多。

相关内容