草野です。

On Sun, 10 Aug 2003 21:44:45 +0900, nobu.nakada / nifty.ne.jp wrote:
>なかだです。
>
>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)が
>必要かも知れません。

・・・あ。(3)でうまくいきました。
(関数名を指定しないときの動作に関してわかってませんでした)
と、いうことでmy_have_libraryは削りました。

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

NUM2INT()はrbogl.c内で一箇所関数呼び出しを直接使っていたので修正しました。
あと、allocate_buffer_with_string()ですが、rb_str_buf_new()が1.6.8にはな
いようなので、とりあえずそのままにしておきたいと思います。

いろいろ、ありがとうございました。

では。