They are both interfaces.
| Interface | API | ABI |
|---|---|---|
| Between whom? | Application/Library and library | Application/Library and platform |
| Defined where? | Headers of the library | Specifications of the platform |
| Contains what? | Definitions of e.g. – functions – variables – classes |
Specifications of e.g. – binary formats – function calling conventions – data structure alignment |
| Examples | – libc++ – libstdc++ |
– System V A64 ABI – Windows x64 ABI |
If application and library are build against a different ABI, they won’t work together.