From: "渡辺博文" Date: 1997-09-14T21:16:11+09:00 Subject: [ruby-dev:486] Re: ruby-tk on Windows わたなべです. KIMURA Koichi wrties: :手間と効果を考えるとベストな気がしますね。 :必要なところだけごしょごしょいじるよりは単純にできそうな気はしま :す。 と思って source を見たらやっぱりよくわからない世界にはまりこ んじゃいました. やっぱ重弘さんの方法が見てみたいっす. :>shared library の環境じゃないと ruby 自身がでかくなっちゃう :>けど, どうでしょう? : :これはTcl/Tkそのものがrubyにスタティックリンクされるから、という :ことですか? tcl76.dllとかtk42.dllはそのまま拝借できないでしょうか? ごちゃまぜにしてすみません. Windows だけじゃなくて, Unix で も同じようにすれば wish を起動しなくてもいいのでちょっとは軽 くなるかなと思いまして. :今、extmk.rb.ntをいじって、拡張モジュールをstatic linkするときに :は.libを、そうでないときは .dllを作るようにしているところです。 cygwin32 では ld -r にバグがあって使えないので同じように .a を作るように extmk.rb をいじったんだけど, バグってしまいまし た. 原さんごめんなさい. #陰謀じゃないよー :#で、miniruby → rubyのときにこれらをリンクすると。 :static linkの場合はうまく行ってるようですが、.dllの方はまだ修正 :の余地があります。perlじゃないけど、自動で.defファイルを作るruby :スクリプトが必要かもしれませんね^^; cygwin32 版はこんな感じで import library を自動で作ってます. dumpbin を使えば同じようにできるかな. #!/bin/sh # #set -x shift NAME=$1 shift OBJS="$@" NAME=`echo $NAME | sed 's/lib\(.*\)\.a/\1/'` echo EXPORTS>$NAME.def nm --extern-only $OBJS >nm.out cat nm.out |sed -n '/^........ [CTD] _/s///p' >>$NAME.def cat nm.out |sed -n '/^........ [CD] _\(.*\)$/s//#undef \1\ #define \1 (*__imp_\1)/p' >import.h dlltool --dllname $NAME.exe --def $NAME.def --output-lib lib$NAME.a rm nm.out -- わたなべひろふみ