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.