From: WATANABE Hirofumi Date: 2000-12-03T15:04:04+09:00 Subject: [ruby-list:26277] Re: アプリにマクロをつけるのについて わたなべです. polygon writes: :昨日、自分のアプリに Ruby でマクロをつけるような感じのテスト :プログラムを作ってみたのですが、少し気になることがあります。 マクロについての質問じゃないんですね. :* リンクするライブラリは、 : usr\local\lib\ruby\1.6\i386-mingw32\librubys.a : を使いましたが、これでいいのでしょうか? それは静的にリンクするときの library です. DLL を使う場合は usr/local/lib/libmingw32-ruby16.a が import library になります. librubys.a の s は static のつもり. :* リンク時に、-lwsock32 が必要でしたが、これはなぜでしょうか? 内情を知ってると逆に疑問に思わなかったりしますが, socket の 関数は handle と descriptor のからみでいろいろ変換しなきゃい けないので win32/win32.c で wrap する処理が入ってます. この部分を ext/socket/ へ移動してもいいのかもしれないけど, select() がある以上どっちにしても wsock32 は必要になるから, 今のような形になっているのでしょう(select() は wsock32.dll にある). Cygwin は必要になった時点で内部的に LoadLibrary してるので, そういう方法もあるけど…. :* 出来上がったプログラムが mingw32-ruby16.dll を参照していない : ようなのですが? 静的にリンクしたからです. :* libruby.a のサイズが 814K なのが気になります(^^; 静的なライブラリだからです. #この名前(librubys.a)も変えたほうがよかったか. :なんか、この系統の説明が少ない(というか、ない)ような気がする。 README.EXT.jp で軽く触れてますが, このあたりは mkmf.rb を使うことを前提にしてます. ext/extmk.rb.in とか mkmf.rb を熟読してください. mkmf.rb を使えば Makefile は正しく作られます. ruby を組み込むという話だと eruby とかの Makefile.RB が参考 になるでしょう. とは言うものの bmingw package にかなり依存してるので, これを使わないとだめかもしれません. -- わたなべひろふみ librubys.a は入れるのやめようかなあ