2010-09-15 4 views
1

J'ai un problème avec la compilation d'un programme écrit en ocaml, l'erreur me semble est: Erreur: Unbound module de base, comment puis-je résoudre ce problème? Je déclare que le débutant avec cette langue.problème avec la compilation du programme en ocaml

Les bibliothèques utilisées dans le code sont: open Basics ;; open Paritygame ;; ouvert Univsolve ;; ouvert Solvers ;;

fichiers

contenant les modules sont les suivants: basics.mli de basics.ml, paritygame.ml paritygame.mli, univsolve.ml univsolve.mli et solvers.ml solvers.mli .....

Répondre

7

Pour compiler le code octet, utilisez ocamlc, suivi de tous les autres fichiers requis dans l'ordre, de gauche à droite, qui représente leurs dépendances. Ces fichiers peuvent être des fichiers de code source ocaml ou des fichiers compilés (cmo). Pour compiler les fichiers individuellement à cmo, vous devez faire quelque chose comme,

ocamlc.opt -c -annot -o util.cmo util.ml 
ocamlc.opt unix.cmo str.cmo util.cmo game.ml -o game 

Il est recommandé d'inclure la chaîne que vous avez utilisé pour tenter de compiler l'application dans votre réponse, qui devrait être juste le bon sens.

libraries used throughout the code are: open Basics ;; open Paritygame ;; open Univsolve;; open Solvers;;

files containing the modules are: basics.ml basics.mli, paritygame.ml paritygame.mli,univsolve.ml univsolve.mli and solvers.ml solvers.mli.....

Ces bibliothèques ne sont pas appelées. Ce sont des modules. Une bibliothèque est une collection de fichiers cmo compilés dans un cma pour la distribution. Mais tout cela, ne dit vraiment rien sur les dépendances entre les modules pour nous dire ce que vous faites mal dans la compilation. Je suggère, une fois que vous obtenez certaines de ces bases, que vous passiez à ocamlbuild. Pour des projets simples comme celui-ci, il est possible de compiler le projet sans effort. Il va résoudre les dépendances et compiler uniquement les fichiers qui ont changé depuis le dernier appel.

0

Le module de base fait en fait partie de , vous devrez d'abord l'installer.

4

Il est fort probable que vous liez les modules dans le désordre. Si vous utilisez ocamlc ou ocamlopt pour lier, mettre basics.cmo/cmx premier:

ocamlc -o my_exec basics.cmo univsolv.cmo paritygame.cmo solvers.cmo 

(. L'ordre ci-dessus peut ne pas être correct - par exemple partiygame.cmo peut dépendre de solver.cmo dans ce cas, vous devez changer l'ordre)

Ou simplement utiliser ocamlbuild car il prend soin de tout cela pour vous.

Questions connexes