简而言之,API 和 ABI
API AND ABI in a nutshell
请用简单的话弄清楚什么是API和ABI(请不要使用维基百科定义(,它们是内核的一部分吗? 它们是函数吗? 他们做什么?
API 是一个应用程序编程接口。它为不同的源代码级软件组件提供了一种相互通信的方法。
API 的一个示例是库的头文件,该文件指定库提供的一组函数以及如何调用它们。例如,在C++中:
//external_library.h
//Processes your data and writes the results to outputlog.txt
void ProcessMyData (std::string data);
这告诉使用 external_library
的程序员他们可以调用一个名为 ProcessMyData
的函数。此函数接收std::string
,不返回任何内容,并且(如果文档是最新的(将结果写入outputlog.txt
。
ABI 是一个应用程序二进制接口。它为二进制组件提供了一种与平台和彼此通信的标准方式。
ABI 的一个例子是系统 V ABI。这指定了各种细节,例如函数调用约定、二进制数据表示、对象文件格式、加载、链接等。您可以在此处阅读适用于AMD64处理器的SysV ABI草案,以了解其内容。
API 应用程序编程接口
这意味着程序员用来编写程序的函数和类。库提供的函数和类是其 API。
ABI 应用程序二进制接口。
这是编译程序后在内存中布局函数和类的低级方式。将已编译程序的一部分链接到已编译的库或已编译程序的另一部分需要以相同的方式布局这些部分,以便所有内容正确组合在一起。
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 将std::string传递给WriteConsole API
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在gtest.中使用fff.h模拟系统API
- 有没有任务栏API可以立即应用注册表更改
- C++win32 API创建多个类似视口的窗口
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 如何将真正的字符串从python c-api转换为python脚本
- 使用Qt框架在c ++类中创建API调用
- Libreoffice API (UNO):需要更改用户的 xTextField 文本
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 使用 Python Extension API 包装复杂C++类
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 为什么库API+编译器ABI足以确保具有不同版本gcc的对象之间的兼容性
- 简而言之,API 和 ABI
- 作为C++库 API 一部分的第三方类型以及潜在的 ABI 不一致
- 如果用c++重写C项目的部分代码,但遗漏了相同的API,是否存在ABI兼容性问题?