API和DLL之间的区别

时间:2010-12-06 11:07:26

标签: winapi api dll

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

10 个答案:

答案 0 :(得分:16)

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

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

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

答案 1 :(得分:6)

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

DLL =动态链接库

API =应用程序编程接口

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

答案 5 :(得分:1)

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

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

API使应用程序开发独立于基础库实现。

示例:

如果您使用C编写程序以打印“ Hello World”。如果您运行 Windows和Linux中使用相同的程序。

这两个可执行文件将使用不同的系统库在屏幕上显示它,因为C语言提供了一组API,例如“ STDIO.h”,“ STDLIB.h”,因此您不必担心基础库的实现。

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

答案 6 :(得分:0)

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

  1. 数据链接层,
  2. 动态链接库(Windows平台上的共享库)。它也可以是资源库。
  3. API(应用程序编程接口)是由软件程序实现与其他软件交互的接口。例如。如果java中需要数据库连接,则需要JDBC api。

    来自维基百科:

      

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

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

    参考文献:

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

答案 9 :(得分:0)

一个简单的答案。

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

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