GNAT supports interfacing with C++ compilers generating code that is compatible with the standard Application Binary Interface of the given platform.
Interfacing can be done at 3 levels: simple data, subprograms and classes. In the first 2 cases, GNAT offer a specific Convention CPP that behaves exactly like Convention C. Usually C++ mangle names of subprograms and currently GNAT does not provide any help to solve the demangling problem. This problem can be addressed in 2 ways:
Interfacing at the class level can be achieved by using the GNAT specific
pragmas such as
CPP_Virtual. See the GNAT
Reference Manual for additional information.