#1 Le 10/03/2008, à 23:59
- Arkandias
Créer des nouveaux modules dans la librairie Ocaml.
Bonjour à tous.
Je suis passé à Ocaml il y a peu (je bricolais un petit peu en Caml-Light avant) et j'ai quelques problème pour compiler des nouveaux modules dans la librairie.
Je m'explique :
Je créer un fichier module.ml avec des instructions (type, val, exception...) et le fichier module.mli, que je compile avec ocamlopt -c module.mli module.ml et je récupère les fichiers modules.cmi et modules.cmx que je place (accompagnés des fichiers d'implémentation et d'interface) dans le répertoire de ma librairie standard Ocaml (/usr/lib/Ocaml/3.09.2/).
Puis je lance Ocaml.
Là Ocaml arrive à trouver mon module (la commande open Module n'échoue pas).
Par contre si je veux utiliser les fonctions définies dans mon module j'ai le droit à un :
" Reference to undefined global `Module' "
Idem si je compile mon module en byte-code.
Si quelqu'un a une idée... merci d'avance!
Hors ligne
#2 Le 11/03/2008, à 18:41
- VincentPicard
Re : Créer des nouveaux modules dans la librairie Ocaml.
Bonjour,
Est-ce que ça marche si tu appelles ta fonction sous la syntaxe : module.fonction (équivalent de module__fonction en caml-light) ?
Vincent
Hors ligne
#3 Le 11/03/2008, à 19:07
- Arkandias
Re : Créer des nouveaux modules dans la librairie Ocaml.
Non justement, c'est ce que j'aimerais faire, mais il me renvoie le message d'erreur (ci-dessus)...
Hors ligne
#4 Le 11/03/2008, à 20:00
- VincentPicard
Re : Créer des nouveaux modules dans la librairie Ocaml.
Dans l'interpreteur ocaml tape d'abord la commande
#load "ton_module.cmx"
ou
#load "ta_bibliotheque.cma" pour une bibliothèque
Ce doit se passer c'est que Caml doit trouver l'interface de ta bibliotheque mais n'a pas les definitions des fonctions.
Pour compiler il faut également ajouter les fichiers de ta bibliothèque dans la ligne de commande.
Vincent
Hors ligne
#5 Le 11/03/2008, à 20:56
- Arkandias
Re : Créer des nouveaux modules dans la librairie Ocaml.
Oki là ça marche (par contre je peux pas faire #load un fichier compilé en natif, la commande accepte que du byte-code, mais sa change rien pour moi).
Merci beaucoup!!
Hors ligne