Précédent Index Suivant

Programme principal en C

Jusqu'à maintenant le point d'entrée du programme était en Objective CAML. Rien n'empêche de le faire démarrer en C. Pour cela il faudra définir, dans le programme C, la fonction main habituelle. Elle initialisera le runtime d'Objective CAML par la fonction caml_main(char **) qui prend en argument le tableau d'arguments correspondant à la valeur du tableau Sys.argv d'Objective CAML. Le contrôle peut être passé à ce dernier en utilisant un callback (voir page ??).

Inclure du code Objective CAML en C

Le compilateur Objective CAML permet d'engendrer des fichiers objets C (fichiers avec l'extension '.o') en lieu et place des fichiers objets Objective CAML (d'extension '.cmo' ou '.cmx'). Il suffit d'utiliser l'option -output-obj du compilateur et d'ajouter la bibliothèque unix.cma.
ocamlc -output-obj unix.cma fichiers.ml
ocamlopt -output-obj unix.cmxa fichiers.ml
À partir des fichiers sources en Objective CAML fichiers.ml, le fichier objet portant par défaut le nom camlprog.o est engendré.

Un exécutable est obtenu en effectuant l'édition de liens avec un compilateur C en ajoutant la bibliothèque libcamlrun.a pour un programme compilé en code-octet ou la bibliothèque libasmrun.a pour la compilation en code natif.
cc camlprog.o fichiersC.o -lcamlrun 
cc camlprog.o fichiersC.o -lasmrun
L'invocation d'une fonction Objective CAML depuis le programme C se fait comme décrit précédemment par les fonctions callback. La seule différence est que l'initialisation et le lancement du runtime d'Objective CAML se fait par la fonction caml_startup à la place de caml_main.






Précédent Index Suivant