murnana's diary

プリントの裏に書くとか、そんな感じです

Unity内でkemono_friends_lang 2日目

   まだまだ試行錯誤はつづくのじゃ。

murnana.hatenablog.com

のつづき。

とりあえず分かったこと

  • WindowsRubyおよび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以下を使うこと。

まだ対応していなかったか…?

次回に続く。