Microsoft C++ ABI

E284627

The Microsoft C++ ABI is the application binary interface that defines how C++ code is represented, called, and linked on Microsoft platforms, ensuring binary compatibility between compilers and libraries in the Windows ecosystem.

All labels observed (8)

How this entity was disambiguated

Statements (50)

Predicate Object
instanceOf C++ ABI
application binary interface
software engineering standard
defines RTTI (run-time type information) representation for C++ on Microsoft platforms
binary interface for C++ class inheritance on Microsoft platforms
binary interface for inline functions on Microsoft platforms
binary interface for multiple inheritance in C++ on Microsoft platforms
binary interface for templates instantiation on Microsoft platforms
binary interface for virtual inheritance in C++ on Microsoft platforms
binary representation of C++ namespaces on Microsoft platforms
calling conventions for C++ functions on Microsoft platforms
exception handling model for C++ on Microsoft platforms
layout of C++ exception objects on Microsoft platforms
layout of C++ stack frames for exception unwinding on Microsoft platforms
name mangling scheme for C++ symbols on Microsoft platforms
object layout for C++ classes on Microsoft platforms
virtual table (vtable) layout for C++ classes on Microsoft platforms
differsFrom Itanium C++ ABI
surface form: Clang C++ ABI on non-Windows platforms

GCC C++ ABI on Linux
Itanium C++ ABI
documentedBy Microsoft C++ ABI self-linksurface differs
surface form: Microsoft PE/COFF ABI documentation

MSVC
surface form: Microsoft Visual C++ documentation
ensures binary compatibility between C++ libraries built with MSVC
binary compatibility between C++ object files on Windows using MSVC
stable linkage of C++ symbols across MSVC versions when ABI-compatible
governs binary layout of C++ alignment and padding rules on MSVC
binary layout of C++ class data members on MSVC
binary layout of C++ closures on MSVC
binary layout of C++ lambdas on MSVC
binary layout of C++ member function pointers on MSVC
binary layout of C++ virtual function tables on MSVC
binary layout of std::string on MSVC
binary layout of std::vector on MSVC
influences ability to mix C++ libraries built with different MSVC versions
cross-compiler C++ binary compatibility on Windows
maintainedBy Microsoft
relatedTo Itanium C++ ABI
Microsoft Visual C++ name mangling
Microsoft C++ ABI self-linksurface differs
surface form: Microsoft x64 calling convention

Microsoft C++ ABI self-linksurface differs
surface form: Microsoft x86 calling conventions

SEH-based C++ exception handling on Windows
usedBy MSVC toolchain
Microsoft C++ ABI self-linksurface differs
surface form: Microsoft C++ standard library implementation

MSVC
surface form: Microsoft Visual C++ compiler

Windows C++ runtime libraries
Windows system C++ runtime (MSVCRT and successors)
usedOnPlatform Windows
Windows RT
surface form: Windows ARM

Windows
surface form: Windows x64

Windows 32-bit
surface form: Windows x86

How these facts were elicited

Referenced by (8)

Full triples — surface form annotated when it differs from this entity's canonical label.

Clang supportsABI Microsoft C++ ABI
Windows 32-bit primaryApplicationBinaryInterface Microsoft C++ ABI
this entity surface form: Win32 ABI
MSVC providesABI Microsoft C++ ABI
this entity surface form: Microsoft Visual C++ ABI
Itanium C++ ABI notUsedBy Microsoft C++ ABI
this entity surface form: Windows C++ ABI
Microsoft C++ ABI relatedTo Microsoft C++ ABI self-linksurface differs
this entity surface form: Microsoft x86 calling conventions
Microsoft C++ ABI relatedTo Microsoft C++ ABI self-linksurface differs
this entity surface form: Microsoft x64 calling convention
Microsoft C++ ABI usedBy Microsoft C++ ABI self-linksurface differs
this entity surface form: Microsoft C++ standard library implementation
Microsoft C++ ABI documentedBy Microsoft C++ ABI self-linksurface differs
this entity surface form: Microsoft PE/COFF ABI documentation