なかだです。

At Sat, 09 Aug 2003 00:27:56 +0900,
Yoshiyuki Kusano wrote:
> 次にGL/gl.hを使っている理由ですが、これは、cygwinインストーラで配布さ
> れているglutを利用するためです。(/usr/lib/w32api/libglut32.a)
> これは、いただいたpatchでも、やはりglutの判定に失敗してしまいます。
> よくわかっていないのですが、どうも、GL/gl.hをインクルードした状態でリン
> クテストを行わないとhave_library関数がlibglut32を認識してくれないのです。
> (libglut32はシンボルがシンボル名@数字になっているため、リンクに失敗してし
> まいます)
> で、my_have_libraryという関数をなぜ作っているかというと、上記理由から
> have_libraryテスト時に、gl.hをインクルードしてほしかったためです。

Windows固有の事情ですか。となると、OpenGLに限らず他のライブラリ
でも可能性はあるわけですね。

(1) my_have_library相当をmkmf.rbに取り込む。
(2) glEnd()以外の、__cdeclされているシンボルを使う。
(3) 関数名を指定せずに、単にリンクできるかどうかだけを調べる。

OpenGLに関しては(3)でも充分な気はしますが、場合によっては(1)が
必要かも知れません。

あと気づいた点ですが、NUM2INT()は引数を複数回評価するので、関数
呼び出しを直接使うのは避けたほうがいいと思います。それと
allocate_buffer_with_string()はrb_str_new()でいいような気が。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦