Lcc-Win32とGLUTの話 2001.July 以前、GLUTに付いてここで書きました。で、2000年7月にそのバージョンが上がってる ことに気付いたのです。 新しい奴(*1)をダウンロードしたのは良いけど、ずーっと放置してた訳です。そして ふと、サンプルをコンパイルしてみたくなり遊んでいました。 (*1) glut 3.7.2。更に新しいのがあるかもしれない。なにせダウンロードしたのが  1年前(^^;; glut for Win32はVC++で作成されてるし、サンプルもVC++のプロジェクト付きなので、 ぼーっとコンパイルするにはVC++が便利なのですな。 で、mui (多分Micro User Interfaceの略だと思う)のソースがありました。でも*.lib がない。ということで、適当にコンパイルしてlibでまとめてmui.libを作成。 何故かnmakeできないので、手動でコンパイルせにゃならんかったけど(T_T)。 ここまではOK。サンプルプログラムもコンパイルできたし、実行も問題ない。 ところがぎっちょん。Lcc-Win32だとコンパイルできない!!というか、コンパイルは できるけどリンクで山のようなエラーが。。。 ど、どーゆーこと?以前に作ったLcc-Win32版のソースにmakeかけても同様! なんてこったい!? まぁ、すったもんだして分かったんだけど結論だけ。 ★ glut 3.7から、glut.hでWindows.hを参照しないで済むように細工したのだが、   これが裏目に出た ★ __glut*WithExit()の扱いを変更したが、これも裏目に出た ということで、Lcc-Win32ではglut.hに細工入れないとダメと判明。具体的には頭の方で # if 0となっている所を# if 1としてwindows.hをインクルードするように変更することと、 glut.hの適当な場所に#define GLUT_DISABLE_ATEXIT_HACKと入れる。 #って、最新のLccを使ってないから分からないが、もしかしたらこの辺りを修正  したglut.hがLccに付属してるかも。上は元々のglut.hを変更する話です ということで、修正したglut.hでLcc-Win32用のmui.libを作成する。 バッチを下に展開しとくから、使っておくんなまし。 lcc -O -c -DWIN32 -D_WIN32 button.c lcc -O -c -DWIN32 -D_WIN32 displaylist.c lcc -O -c -DWIN32 -D_WIN32 gizmo.c lcc -O -c -DWIN32 -D_WIN32 glutmui.c lcc -O -c -DWIN32 -D_WIN32 hslider.c lcc -O -c -DWIN32 -D_WIN32 miscui.c lcc -O -c -DWIN32 -D_WIN32 mui.c lcc -O -c -DWIN32 -D_WIN32 pulldown.c lcc -O -c -DWIN32 -D_WIN32 textlist.c lcc -O -c -DWIN32 -D_WIN32 uicolor.c lcc -O -c -DWIN32 -D_WIN32 vslider.c lcclib /verbose /out:mui.lib gizmo.obj glutmui.obj displaylist.obj uicolor.obj miscui.obj mui.obj vslider.obj textlist.obj button.obj pulldown.obj hslider.obj これでmuiも正しく動くものができます。 例えばmui_test.cをコンパイルする場合: lcc -A -O -D_WIN32 -DWIN32 MUI_TEST.c lcclnk -s MUI_TEST.obj mui.lib opengl32.lib glu32.lib glut32.lib これでOK(*2)。ちなみにライブラリのリンクの順番を間違えるとリンクできないので 注意して下さいね(mui.libを最初にリンクする必要がある)。 #mui.libってスタティック・ライブラリなんで、多分、そのせい。 (*2) DOS窓が(というか、コンソールが)必ず開くプログラムになるけど、そうなる   理由はテストプログラムを実行すれば分かります。メッセージが出るんですね、   コンソールに。   コンソールがいらないならリンク時に-subsystem windowsを追加してください。 参考URL:  GLUTを色々なコンパイラから使う:   C++ Builder: http://www.nk.rim.or.jp/~m_iida/programming/diary/19990421.html   Cygwin: http://www.cim.pe.u-tokyo.ac.jp/~kawachi/software/cygwin.html   Lcc-Win32: http://www.rimath.saitama-u.ac.jp/lab.jp/tsakurai/opengl/index.html う〜ん。Cygwinはともかく、BCCでmain()からスタートするGUIなアプリを作成するには 確かスタートアップルーチンのソースに手を入れる必要があるはずで、それはフリー版 では(ソースが付いてこないので)不可能。という情報はどこから得たんだっけな〜。 (EOF)