Пример Ocaml OpenGL из Википедии не компилируется - PullRequest
1 голос
/ 08 июня 2009

Я пытаюсь начать с базового программирования Ocaml. Для начала я хотел получить пример OpenGL из Википедии. http://en.wikipedia.org/wiki/Ocaml

    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 ()

Данная директива компилятора

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

Просто вызывает и выдает ошибку в строке 2, говоря, что Glut.init не связан

Я запускаю это на cygwin, что может быть источником проблемы. Но кто-нибудь знает, как это исправить?

Ответы [ 2 ]

2 голосов
/ 08 июня 2009

Сначала необходимо установить привязки LablGL , как указано на странице Википедии. Я не знаю, как лучше всего это сделать на Cygwin.

P.S. Программирование на OpenGL вряд ли является «базовым программированием на Ocaml»

0 голосов
/ 12 июня 2009

На самом деле, это боль в работе с cygwin + windows. Причина, по которой вы получаете ошибки - это, скорее всего, проблемы с библиотекой. Это может быть так же просто, как копирование библиотек opengl в каталог вашего исполняемого файла (попробуйте сначала). Но, скорее всего, это проблема связывания. Лучше всего либо скомпилировать с msvc (довольно болезненно), либо с mingw. Mingw работает намного лучше (FOR OPENGL), чем весь набор инструментов, работающий в Cygwin. Но в остальном я предпочитаю cygwin.

- Нико

...