まだまだ試行錯誤はつづくのじゃ。
のつづき。
とりあえず分かったこと
- WindowsにRubyおよびRubyGemは標準で入っていないため、DLLにビルドするなら猶更、Rubyをインストールしておかなくてはならない(ビルド不可)。
- RubyにPATHを通す必要がある
- DLLにするなら、Rubyだけではできない。DevKitを入れて、さらにdk.rbを実行する必要がある(
ruby dk.rb init
抜いたらparse.cをコンパイルしているときに'bison'がないと怒られた) - DevKitにあるbinをPATHに通す必要がある
ここでいうPATHは、「システム環境変数の編集」で「PATH」項目にbinフォルダを設定すること(ぶっちゃけ…)
現在の問題点
Ruby 2.3.3.をビルドしようとしたら、以下のエラーが出た。
linking miniruby.exe
win32.obj: error LNK2001: 外部シンボル"imp_pioinfo"は未解決です。
miniruby.exe: fatal error LNK1120:1件の未解決の外部参照
NMAKE: fatal error U1077: ‘“【プログラムファイル的な】\Microsoft Visual Studio 14.0\VC\BIN\cl.EXE”’:リターンコード'0x2'
Stop.
また、最近のtrunkブランチから引っ張ったものは、ビルドは通ったが実行ファイルがうまくいかない。
win32.cの2528行目のここで止まる。
return (ioinfo)((char)__pioinfo[fd >> IOINFO_L2E] +
(fb & (IOINFO_ARRAY_ELTS-1)) * sizeof_ioinfo);
たぶん解決方法も見えている。が、これでだめならRubyのDLL化は見送ったほうがよさそうだ…。
解決方法は、VS2015ではなく、VS2013以下を使うこと。
まだ対応していなかったか…?
次回に続く。