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.