La seule réponse vraiment compilable-agnostique que je peux vous donner est que c'est aussi simple que d'appeler C++ de C sur votre système. Tout comme avec C, vous devez trouver le symbole brouillé par le nom de votre routine C++ et écrire une liaison sur le côté C (dans ce cas, le côté Ada) qui lie à ce nom tronqué. Vous devrez également probablement faire certaines choses du côté C++, comme déclarer la fonction C++ extern.
Si vous pouvez déclarer votre fonction C++ externe "C", c'est facile. Faites-le simplement du côté C++ et utilisez les fonctions d'importation C standard d'Ada côté Ada.
Exemple:
dans votre cpp:
extern "C" int cpp_func (int p1, int p2) {
; // Whatever..
}
dans votre .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);
Il existe plusieurs systèmes d'exploitation dans le monde. Il existe plusieurs implémentations C++. Il existe plusieurs implémentations Ada. Ce que vous demandez n'est pas une définition de la langue, mais une mise en œuvre. Vous devez inclure plus de détails. –
Je suis confus. La question commence en disant que vous voulez aller Ada-> C++, mais finit par dire que vous voulez aller C++ -> Ada. Ce sont des choses très différentes. –
J'aurais dû clarifier cette notation ... ici le -> signifie "importé par" ou "appelé par". Ce que je voulais savoir, c'était que je ne voulais pas avoir à écrire des C wrappers dans mon C++ pour entrer dans Ada, mais aller directement. Sry n'était pas très clair. – paxos1977