LablGtkを使う

LablGtk

http://lablgtk.forge.ocamlcore.org/

インストール
http://lablgtk.forge.ocamlcore.org/install-win32.txt

lablgtk-2.14.0-win32.zipをダウンロード
中身をOCamlディレクトリにコピーする

GTK+

GTK+のバイナリ入手
ftp://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.16/
gtk+-bundle_2.16.6-20100912_win32.zip

C:/opt/gtk
bin
include
lib
となるように展開する

C:/opt/gtk/binにパスを通す

build

> cd C:\OCaml\lib\lablgtk2
> ocaml build.ml

実験

base.ml

let main () =
  let window = GWindow.window () in
  window#show ();
  window#connect#destroy ~callback:(fun () -> GMain.Main.quit ());
  GMain.Main.main ()

let _ = main ()
> C:\Ocaml\bin\lablgtk2.bat base.ml

> C:\Ocaml\bin\ocaml -I +lablgtk2 lablgtk.cma gtkInit.cmo base.ml
でもだいたい同じ

ネイティブコンパイル

> ocamlopt -I +lablgtk2 lablgtk.cmxa gtkInit.cmx  base.ml -ccopt "-LC:/i686-pc-mingw32/lib"

"-LC:/opt/gtk/lib"は要らないらしい。dependency walkerで見たらちゃんとgtkのdllとリンクされていた。