From: Yukihiro Matsumoto Date: 2005-10-25T18:00:27+09:00 Subject: [ruby-dev:27515] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris まつもと ゆきひろです In message "Re: [ruby-dev:27510] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris" on Tue, 25 Oct 2005 15:52:04 +0900, "U.Nakamura" writes: || 拡張がロードできるのに、ライブラリを「流用」できないという状 || 況を説明できる自信がありません。 | |「拡張ライブラリ」はロードできるけど、「ヘッダやライブラリ」 |は流用できないわけですが、後者の「ライブラリ」は「インポート |ライブラリ」であって「拡張ライブラリ」ではありません。 |言葉足らずですみませんです。 |# やっぱ「拡張モジュール」と呼ぶべきか? それは分かってます。ただ、拡張ライブラリがロードできるのに、 拡張ライブラリを経由して「呼び出せる」はずのライブラリが「流 用」できないとはどういうことか疑問に思ったわけです。あるいは 「流用」という単語が指示しているものが私のイメージと異なるの かもしれないと思って、括弧で括ってみたのですが。 |私も完全にMinGW版の事情を理解しているわけではないのですが、ruby |本体DLLを作成する時とruby本体DLLをリンクする何かを作成する時 |でdllimportをつけるかどうかを変えないといけない、という問題だ |ったと思います。 | |dllimportなし + staticリンク -> OK |dllimportあり + staticリンク -> NG |dllimportあり + dynamicリンク + 正しいインポートライブラリ -> OK |dllimportあり + dynamicリンク + 不正なインポートライブラリ -> OK |dllimportなし + dynamicリンク + 正しいインポートライブラリ -> OK |dllimportなし + dynamicリンク + 不正なインポートライブラリ -> NG | |というわけで、dllimportなしにして正しいインポートライブラリを |利用できるようにしておけば、staticだろうがdynamicだろうがうま |くいくわけで、MinGW版は現状このように提供されているはずです。 |今回はわざわざ不正なインポートライブラリを自分で作ってそれを |利用しようとしてるのがだめ、と。 だとすると対応は * mingw(のreimp)のバグなのでそっちにレポートしてくれ * mingwではstaticリンク時とdynamicリンク時でdllimportを付 けるか付けないかを変更する のいずれかではないかと思います。なんとなく後者の方が楽な気が するんですが。[ruby-dev:27512]のパッチでそれができるってこと なのかしら。 まつもと ゆきひろ /:|)