なかだです。

At 14 Jul 2001 08:09:32 +0900,
tamra / mail.goo.ne.jp wrote:
> ■isc_expand_dpb() でエラーになる問題
> なかださんから指摘があったように、APIリファレンスガイドに
> 『Windows 95 およびWindows NT では,引数の個数が固定されている関数
> には,常に標準呼び出し規約(_stdcall)を使用します。引数の個数が
> 可変の関数はisc_start_transaction(),
> isc_expand_dpb(),isc_event_block() の3 つだけです。これらにはcdecl 
> 規約を使用します。』
> とありました。いままでの所インポートライブラリの作り方の問題か
> BCC以外では動いてません。

  うーん、パッチを見るとInit_interbase()が__stdcallになってるだ
けのような気がしますが、Interbaseのヘッダにあるプロトタイプ宣言
にはすでに__stdcallはついてましたか、ひょっとして。
# なんかリバースパッチになってますが。

> ■export問題
> Borland C++ Compiler 5.5 (BCC)にて、interbase.c をいぢらずに、
> interbase.so でシンボルをエクスポートする方法が判らなかったので、
> ソースをいぢりました。

  BCCじゃ.defファイルは効きませんか。リンクのところではコメント
アウトしてあるようですが、エラーになりました?

> オプションとかで対応できると思われるのですが、vc++でのオプションをどなたか
> 教えていただけませんか。
> ((* ruby.h は触らずに、-Dinline指定で大丈夫になりました。*))

  vc++でのオプションというのは? #define inlineを入れるなら
ruby.hじゃなくてconfig.hでしょう。bcc用のconfig.hを作ったほうが
いいのかも。

> ■GC 問題
> スクリプト内の require 直後に、GC.start しとかないとスクリプト終了時の 
> conn_free()内の free()で SEGV ります。
> Init_interbase() にアヤシそうな所もないのですが。
> [ruby-ext:00349] Re: Ruby/Gtk + Imlib patch
> を参考に、Init_interbase()の最後に、rb_gc() を追加してます。

  Interbase持ってないので確認しようがないんですが、free()で落ち
るというのはなんとなく違うような気がしなくもなかったり。

> [ruby-ext:00439] Data struct, including VALUE type variable
> [ruby-ext:00445] ruby-xlib-0.5 released
> 辺りを見ると、「VALUE 型を含む構造体を Data Struct として使うべきでない」
> とのことですけど、どうしましょう。

  避けたほうが無難というか楽だとは思いますが、必要ならばもちろ
ん使うしかないのでは。

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