Die einzige wirklich compiler-agnostische Antwort, die ich Ihnen geben kann, ist, dass es genauso möglich ist, C++ von C auf Ihrem System aufzurufen.
Ähnlich wie bei C, müssen Sie herausfinden, Ihre C++ - Routine Name-Mangled-Symbol und schreiben Sie eine Bindung auf der C (in diesem Fall die Ada) -Seite, die auf diesen verstümmelten Namen verlinkt. Sie werden wahrscheinlich auch einige Dinge auf der C++ Seite tun müssen, wie die C++ Funktion extern zu deklarieren.
Wenn Sie Ihre C++ Funktion extern "C" deklarieren können, ist es einfach. Tun Sie das einfach auf C++ - Seite und verwenden Sie Adas Standard-C-Import-Funktionen auf der Ada-Seite.
Beispiel:
in Ihrem cav:
extern "C" int cpp_func (int p1, int p2) {
; // Whatever..
}
in Ihrem .adb:
function cpp_func (p1, p2 : Interfaces.C.Int) return Interfaces.C.Int;
pragma Import (C, cpp_func);
...
Result : constant Interfaces.C.Int := cpp_func (1, 2);
Es gibt mehr als ein Betriebssystem auf der Welt. Es gibt mehr als eine C++ - Implementierung. Es gibt mehr als eine Ada-Implementierung. Was Sie fragen, ist keine Sprachdefinition, sondern eine Implementierung. Sie müssen mehr Details angeben. –
Ich bin verwirrt. Die Frage beginnt damit, dass du Ada-> C++ schreiben willst, aber am Ende sagst du C++ -> Ada. Das sind sehr unterschiedliche Dinge. –
Ich hätte diese Notation verdeutlichen sollen ... hier bedeutet das -> "importiert von" oder "aufgerufen von". Worauf ich hinaus wollte war, ich wollte C-Wrapper nicht in mein C++ schreiben müssen, um in Ada zu gelangen, sondern direkt. Sry, das war nicht sehr klar. – paxos1977