Interface ADA avec C

Interface ADA avec C - Ada - Programmation

Marsh Posté le 05-10-2009 à 15:15:07    

Bonjour,
 
Je cherche à appeler du code ada à partir d'un code c.
J'ai déjà une solution avec le pragma export et ça marche bien.
Mais mon but est de comprendre comment fonctionne les callback en ada.
Cette façon de faire permet au code c d'appeler un sous-programme ada en passant par un pointeur de fonction.
J'ai alors testé la chose suivante qui ne fonctionne pas :
 
Code C:
======
 
typedef void (*void_function_type)(void);
static void_function_type callback;
void give_c_ptr(void_function_type f)
{ callback = f; }
 
int main (void)
{
   adainit();
    (*callback)(); -- quand je lance l'exe, ca se bloque ici
   adafinal();
   return 0;
 
}
 
Code Ada:
=======
package LIB_ADA is
    type C_Function_Ptr is access procedure;
    pragma Convention (C, C_Function_Ptr);
 
    procedure function_ada;
    pragma convention(C, function_ada);
end LIB_ADA;
 
package body LIB_ADA is
   procedure function_ada is
   begin
      ada.text_io.put("ADA is called" );
   end function_ada;
end LIB_ADA;
 
 
Y'a t-il des connaisseurs en ada pouvant m'aider à comprendre pourquoi mon code ne fonctionne pas car le code ada n'est jamais appelé ?
 
Merci d'avance pour aide.

Reply

Marsh Posté le 05-10-2009 à 15:15:07   

Reply

Marsh Posté le 09-10-2009 à 16:39:42    

J'ai résolu le problème.
 
C'est assez puissant car le code C appelle une fonction Ada sans savoir que c'est de l'Ada (ni du Java ni n'importe quel autre techno...).
 
neoada

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed