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.