なかだです。

At Wed, 20 Jun 2001 22:27:58 +0900,
WATANABE Hirofumi <eban / os.rim.or.jp> wrote:
> 基本的には賛成ですが、ruby.cに手を入れなきゃいけないとこが
> ちょっと不満です。ここなんとかならないかなあ。

  うーん、難しいんですよね。Forwarding DLL が同じファイル名にな
るというのがキモなので共存させようと思うと当然別のディレクトリ
になきゃいけないし、なるべく環境はいじりたくないし、ってことで。
一番いいのは拡張ライブラリのロード時に自動的にロードされること
なんですが。ruby.c だけ元に戻して試してみましたが、やっぱり拡張
ライブラリと同じところにおいてもダメなようです。

$ mv ruby.so ext/etc/
$ ./ruby -I ext/etc -retc -e 'p Etc.getlogin'
0: 1157: このアプリケーションの実行に必要なライブラリ ファイルのうちの 1 つが見つかりません。   - ext/etc/etc.so (LoadError)

> ruby16.soじゃないのは、たとえば1.6の拡張ライブラリがそのまま
> 1.7でも動く可能性があるから?

  動きました。逆はできるとは限りませんが。1.6 には StringValue
がないからでしょう。

$ ./1.7/i686-mswin32/ruby -I ./1.6/i686-mingw32/ext/etc -retc -e 'p Etc.getlogin'
"nobu"
$ ./1.6/i686-mswin32/ruby -I ./1.7/i686-mingw32/ext/etc -retc -e 'p Etc.getlogin'
"nobu"
$ ./1.7/i686-mswin32/ruby -I ./1.6/i686-mingw32/ext/nkf -rnkf -e 'p NKF.guess("")'
0
$ ./1.6/i686-mswin32/ruby -I ./1.7/i686-mingw32/ext/nkf -rnkf -e 'p NKF.guess("")'
0: 31: システムに装着されたデバイスは動作していません。   - ./1.7/i686-mingw32/ext/nkf/nkf.so (LoadError)


> i686なの?

  いやそこはあんまり考えてなかったんですが、むしろ archdir なん
かも i386 とか ix86 とかに統一しちゃった方がいいのかも。でもそ
うすると i386 で動かないのがあったりするとまずいのか。

> windresがどうからむのかいまいち不明ですが、

  .def ファイルに余分なものがあるとそれを全部 stdout に吐き出す
ようなので。なんか DOS 窓でカーソルがチラチラするなと思ったら全
部の行の CR を吐き出してたという。

> automode.oはmingwじゃなくてcygwinです。
> mingwだとmsvcrt.dllの中身をいじらないとautomodeは無理?

  そりゃそうですね。入力は text 出力は binary ってのはできそう
にないな。

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