【问题标题】:difference between API and DLLAPI和DLL之间的区别
【发布时间】:2011-05-20 22:13:56
【问题描述】:

我想知道 API 和 DLL 之间的确切区别。 谢谢。

【问题讨论】:

  • 是的,API 仅仅是函数吗?
  • 嗨,Imahan,请查看我的更新答案。

标签: winapi api dll


【解决方案1】:

一个简化的答案。

API 始终(根据定义)是应用程序编程接口。它是一组方法,可用作应用程序、Web 服务等的接口。

DLL 是与可执行文件格式相同的共享库文件。它包含要在其他 EXE 之间共享的代码和数据,因此您不必在每次更新 DLL 时重新编译它们。例如,DLL 允许您升级 Windows 版本并使应用程序在最新版本上运行。它可能包含可由一个或多个可执行文件(如 API)重用的代码。另一方面,它可能只包含数据,例如图标 (.icl) 和字体 (.fon)。

【讨论】:

    【解决方案2】:

    每个 DLL 都有一些(是一个?)接口 (API),否则它将无用,但并非每个 API 都是 DLL,如示例中您可以使用 Web Api,您使用远程端点使用示例 HTTP 协议 -甚至不是 DLL 中的文件

    【讨论】:

      【解决方案3】:

      API 是包含函数和类声明(输入和输出参数)的头文件 (.h),这些声明的实现,即类或函数的定义将特别是 dll。

      但是要连接(动态链接)这些 .h 和 .dll 文件,您需要 .lib 文件,这些文件将在运行时解析函数定义的地址并加载特定的 dll 文件。因此,库包含(APIs(.h)、lib 和 dll 文件)。

      API 使应用程序开发独立于底层库实现。

      示例:

      如果你用 C 语言编写程序来打印“Hello World”。如果你运行 Windows 和 Linux 中的相同程序。

      这两个可执行文件都将使用不同的系统库将其显示在屏幕上,因为 C 语言提供了诸如“STDIO.h”、“STDLIB.h”之类的 API 集,您无需担心底层库的实现。

      因此,您可以将 API 视为头文件,将函数/类声明与函数/类定义连接起来。因此,名称为“应用程序接口”。

      【讨论】:

        【解决方案4】:

        API 是应用程序不同组件之间通信的接口,其中 dll 是一个库文件,其中包含代码,以便您的程序可以使用您的 API 来使用

        【讨论】:

          【解决方案5】:

          这两个术语之间几乎唯一的联系是,如果您进行本地 Windows 编程,您使用或编写的 API 通常会显示为 DLL 文件。但这也不是 API 可以采用的唯一具体形式,也不是每个 DLL 都代表一个 API。

          API 的意思是“应用程序编程接口” - 它是代码实体(函数、类等 - 取决于编程语言)集合的抽象术语,旨在供广大程序员用来访问应用程序的功能。应用程序或库。

          DLL 是 Windows 上的一种文件格式,其中包含可执行代码作为模块化应用程序的一种方式。

          【讨论】:

          • 这是一个很好的答案!真的非常感谢你:)
          • 还有一个疑问,API 包含在 DLL 中,对吗? API只是可以被用户进程调用的函数,那又如何呢?
          • @imahan:再说一遍:API 是一个抽象术语。如果您使用 C 进行 Windows 编程,那么可以,您的 API 通常是 DLL 文件中的函数。如果您进行 Java 编程,API 是包含在 JAR 文件中的类。大多数平台都有自己的机制。
          • 这是 imo 的最佳答案。值得注意的是,API 也可以用作代码库实现者的指南,而不仅仅是它的客户。参看。 Mono 作为替代的 .Net Framework 类库。相同的 API,不同。实施。
          【解决方案6】:

          DLL 是代码库,API 是代码库的接口。

          【讨论】:

            【解决方案7】:

            更新: DLL(动态链接库)是一个代码组件(有些类似于 Java 中的 Bean)。 DLL 包含方法或函数或例程或任何您称之为代码片段的内容。 API 是应用程序和该 DLL 之间的接口。大多数情况下,DLL 用于为其他应用程序提供服务,这些 DLL 称为服务器 DLL,如果 DLL 通过使用 API 调用或其动态调用请求某些服务,则称为客户端 DLL。这么简单的想法,API 只不过是可以从该 DLL 外部访问的方法或函数。 希望你现在明白了。

            【讨论】:

            • 当然我可以浏览维基百科并找到答案,我在这里是因为我不明白那里说什么!所以请回答我的问题,“”API 是否包含在 DLL 中?也就是说,API仅仅是可以调用的函数吗?"" 谢谢
            • @imahan,API 是接口,除非实现,否则不能使用它们。因此,DLL 包含implemented API。请参阅我的更新答案。
            【解决方案8】:

            应用程序编程接口 (API) 是由软件程序实现的接口,它可以与其他软件进行交互。它促进不同软件程序之间的交互,类似于用户界面促进人与计算机之间交互的方式。 - 维基百科

            动态链接库 (DLL) 是提供 API 的一种方式。 (程序员的接口)您可能有各种其他方法,例如 Web 服务。

            【讨论】:

            • 那么,我的下一个问题是:API 是否包含在 DLL 中?也就是说,API仅仅是可以调用的函数吗?
            • 嗯,这是一个例子。这来自 Sharepoint API。 msdn.microsoft.com/en-us/library/… 你可以看到很多支持程序员的方法(所以这是一个程序员接口)。但这是作为 DLL 文件提供的。我的意思是每个 API 都应该以某种格式呈现(交付)给用户。 DLL 是执行此操作的一种格式 :)
            • @imahan:你错过了重点:API 是一个 抽象 术语。 DLL 是一种具体的技术文件格式。
            • @Michael - 很好的解释。 :)
            【解决方案9】:

            您必须具体。 DLL 可以代表:

            1. 数据链路层,
            2. 动态链接库(Windows 平台上的共享库)。它也可以是一个资源库。

            API(应用程序编程接口)是由软件程序实现以与其他软件交互的接口。例如。如果在java中需要数据库连接,则需要JDBC api。

            来自维基百科:

            API 由应用程序实现, 库和操作系统 确定他们的词汇和 调用约定,并用于 访问他们的服务。

            DLL 的用途(动态库几乎总是提供某种形式的共享,允许多个程序同时使用同一个库)。 本质上,WINAPI (Windows API) 都是在 DLL 文件中实现的,例如 mmsystem.dll 用于 MMSYSTEM Sound API。

            参考资料:

            【讨论】:

            • 所以 API 是可以调用的函数,而且 API 也驻留在 DLL 中,对吗??
            • @imahan,是的...API 是“骨架”(因为没有更好的词)函数,它的实现位于 DLL 中。如果您想在 Windows 中使用 MMYSTEM Sound API,则必须使用在 mmsystem.dll 库中找到的已实现 API,否则您将调用骨架方法。
            【解决方案10】:

            DLL = 动态链接库

            API = 应用程序编程接口

            DLL 只是 Windows 系统上的一个文件,其中包含一些可供其他可执行文件使用的代码。 API 是一种使用一个软件或软件库与另一个软件一起使用的方式。例如,有一个 Windows Registry API 允许您使用注册表,但是当您使用该 API 时运行的代码存储在 DLL 中。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-10-15
              • 2011-05-23
              • 1970-01-01
              • 1970-01-01
              • 2012-10-29
              • 1970-01-01
              • 1970-01-01
              • 2011-05-24
              相关资源
              最近更新 更多