2009-06-08 9 views
1

J'essaie de commencer avec une programmation de base Ocaml. Pour commencer, je voulais faire tourner l'exemple OpenGL depuis wikipedia. http://en.wikipedia.org/wiki/Ocam lOcaml OpenGL exemple de wikipedia ne parvient pas à compiler

let _ = 
    ignore(Glut.init Sys.argv); 
    Glut.initDisplayMode ~double_buffer:true(); 
    ignore (Glut.createWindow ~title:"OpenGL Demo"); 
    let angle t = 10. *. t *. t in 
    let render() = 
    GlClear.clear [ `color ]; 
    GlMat.load_identity(); 
    GlMat.rotate ~angle: (angle (Sys.time())) ~z:1.(); 
    GlDraw.begins `triangles; 
    List.iter GlDraw.vertex2 [-1., -1.; 0., 1.; 1., -1.]; 
    GlDraw.ends(); 
    Glut.swapBuffers() in 
    GlMat.mode `modelview; 
    Glut.displayFunc ~cb:render; 
    Glut.idleFunc ~cb:(Some Glut.postRedisplay); 
    Glut.mainLoop() 

La directive du compilateur donné

ocamlc -I +lablGL lablglut.cma lablgl.cma simple.ml -o simple 

causes justes et l'erreur sur la ligne 2, en disant que Glut.init est non liée.

Je cours ceci sur cygwin, qui pourrait être la source du problème. Mais quelqu'un sait-il comment le réparer?

Répondre

2

Vous devez d'abord installer les liaisons LablGL, comme indiqué sur la page Wikipedia. Je ne sais pas quelle est la meilleure façon de le faire sur Cygwin.

P.S. La programmation OpenGL est à peine "une programmation de base d'Ocaml"

+0

Il semble que vous devez également utiliser la version MSVC de Ocaml, bien que je pouvais avoir juste fait tout mal. – AlexH

0

C'est en fait un peu pénible de travailler sur les fenêtres de cygwin +. La raison pour laquelle vous obtenez des erreurs est la plupart du temps des problèmes de bibliothèque. Cela peut être aussi simple que de copier les dlls opengl dans le répertoire de votre exécutable (essayez d'abord). Mais surtout, c'est un problème de liaison. Votre meilleur pari est soit de compiler avec msvc (genre de douloureux) ou avec mingw. mingw fonctionne beaucoup mieux (FOR OPENGL) que de faire fonctionner l'ensemble des outils dans cygwin. Mais sinon je préfère cygwin.

--Nico

Questions connexes