From: "U.Nakamura" Date: 2005-10-26T01:52:22+09:00 Subject: [ruby-dev:27527] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris こんにちは、なかむら(う)です。 In message "[ruby-dev:27522] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris" on Oct.25,2005 19:26:31, wrote: | | | だとすると対応は | | | | | | * mingw(のreimp)のバグなのでそっちにレポートしてくれ | | | * mingwではstaticリンク時とdynamicリンク時でdllimportを付 | | | けるか付けないかを変更する | | | | | | のいずれかではないかと思います。なんとなく後者の方が楽な気が | | | するんですが。[ruby-dev:27512]のパッチでそれができるってこと | | | なのかしら。 | | | | 前者は結局よその話なので置いておくとして、後者はそんなに楽で | | もないんじゃないかと思います。 | | defines.hは | | #ifndef RUBY_EXPORT | #define RUBY_EXTERN extern __declspec(dllimport) | #endif | | にして、ext/extmk.rbの中でstaticリンク時はCFLAGSに-DRUBY_EXPORT | を追加する、でいける気がしてきました。 | (この場合、[ruby-dev:27512]のconfigure.inのパッチは必要) | | これで変な副作用がなければいいのかな。 ebanさんやなかださんとIRCで相談してみたりもしたのですが、 (1) そもそものバグ報告に対しては仕様のつもりだった、と言いた いところ。 (2) [ruby-dev:27512]のパッチはそれを無理矢理ごまかしてるんだ けなので私には受け入れがたい。 (3) とはいえ、MinGWでは、というか、MinGWに限らず、ruby本体お よびそれにstaticにリンクされる時はdllimportなし、dynamic にリンクされる時はdllimportあり、となるのがあるべき姿では ある。 (4) 当初それは難しいと思ったけど、実はそうでもなかった。 というわけで、(3)になるようにする、という方向で解決することに しました。 例によってパッチはなかださんに作っていただいたので(ありがとう ございます)、後ほどcommitされるでしょう。 mswin32のdynamic/staticリンク、MinGWのdynamic/staticリンク、 問題のreimpを使ったmswin32のインポートライブラリ・ヘッダ流用 でのMinGWでの拡張ライブラリの作成、は、いずれもそれでうまくい きそうです。 と言っても、最後のは、拡張ライブラリの中身によっては、ヘッダ の差による問題が発生するかもしれませんが、さすがにそれは保証 の限りではないということで。 # ちなみにMinGWのヘッダを流用してVC++6で拡張ライブラリを作ろ # うとしても、long longとかないので無理。 それでは。 -- U.Nakamura