答案1
DLL 文件本身不是可执行文件,尽管它可能包含可执行代码。DLL(动态链接库)包含可供其他程序使用的代码、数据、资源等。您需要一个 EXE 文件,以便操作系统执行 DLL 文件中的代码,例如 Windows 中的“RUNDLL.EXE”或“RUNDLL32.exe”。
答案2
根据维基百科文章,DLL 是一个可执行文件。
在计算中,可执行文件使计算机“根据编码指令执行指示的任务”,而不是必须由程序解析才有意义的数据文件。
根据这个定义,DLL 是可执行文件,因为它包含执行任务的编码指令。
确切的解释取决于用途;虽然该术语通常仅指机器代码文件,但在防御计算机病毒的背景下,所有导致潜在危险指令执行的文件(包括脚本)都被方便地归为一类。
对于 DLL 来说也是如此。
但有些人可能会认为 DLL 无法自行运行,它总是需要一些程序来加载 DLL 并调用 DLL 导出的函数,因此从严格意义上讲,您可能还会说只有 exe 文件(如果在 Windows 上)才是可执行文件。正如维基百科所说...
确切的解释取决于用途
如果在给定上下文中不清楚是否包含 DLL,我会尝试使用更清晰的术语或短语,并避免谈论可执行文件。即使在我的工作中(软件开发人员),我也不确定每个人都会同意“可执行文件”也意味着 DLL。
答案3
答案4
维基百科文章并不具有权威性。维基百科需要其他权威机构。关于可执行文件相对于 DLL 的定义,一个好的权威机构是 Microsoft 文档,例如动态链接库(动态链接库) - Win32 应用 | Microsoft Docs。
最初在动态链接出现之前,只有静态链接。编译器(例如 C 和 C++ 编译器)会为读入的每个源文件生成一个目标文件。它们现在仍然这样做。然后,这些目标文件被链接在一起形成一个可执行文件。但可执行文件是由一个或多个目标文件创建的。为方便起见,可以将目标文件放入可由链接编辑器静态链接的库中。动态链接库是静态库的扩展,其中链接编辑器使用库文件,但可执行代码存在于单独的文件中以供执行期间使用。因此,动态链接库被设计为包含可执行代码,就像直接或间接调用其使用的所有 DLL 的主可执行文件一样多。