2021/08/13(金) [n年前の日記]
#2 [dxruby] DXRuby 64bit版が動かなくて悩んだ
DXRuby 1.4.7 から、64bit版も同梱されるようになったと知った。素晴らしい。
しかし、Windows10 x64 21H1上で DXRuby 1.4.7 の動作確認をしてみたら、Ruby のバージョンによっては、require "dxruby" をしただけでエラーが出て悩んでしまった。
しかし、Windows10 x64 21H1上で DXRuby 1.4.7 の動作確認をしてみたら、Ruby のバージョンによっては、require "dxruby" をしただけでエラーが出て悩んでしまった。
◎ 調査結果。 :
以下の Ruby バージョンでは DXRuby 1.4.7 64bit版が動かない。require "dxruby" をしただけでエラーが出る。
しかし、Ruby 64bit版上では必ず動かないというわけでもない。以下のRubyバージョンなら DXRuby が動く…。
また、最新の Ruby では必ず動かないというわけでもない。以下のように、32bit版なら、最新の Ruby でも DXRuby が動く…。
このことから推測できることは…。
おそらく、DXRuby 64bit版のバイナリがビルドされた時期に公開されていたバージョンの Ruby 64bit版を使えば、DXRuby 64bit版も動くのではないか、という気もする。
Ruby 64bit版は、Ruby 32bit版に比べて、拡張ライブラリのバイナリ互換性が低いということなのだろうか…?
余談。Ruby 64bit版にも対応してる gosu はどうしているのかなと gem install gosu をしてみたら、ビルドが始まった…。ということは、DevKitの導入が必須なのか…。バイナリだけを配布して動かすことを諦めている気配がする…。
- Ruby 3.0.2 p107 x64 (2021-07-07) (rubyinstaller-devkit-3.0.2-1-x64.exe)
- Ruby 2.7.4 p191 x64 (2021-07-07) (rubyinstaller-devkit-2.7.4-1-x64.exe)
- Ruby 2.7.3 p183 x64 (2021-04-05) (rubyinstaller-devkit-2.7.3-1-x64.exe)
しかし、Ruby 64bit版上では必ず動かないというわけでもない。以下のRubyバージョンなら DXRuby が動く…。
- Ruby 3.0.0 p0 x64 (2020-12-25) (rubyinstaller-devkit-3.0.0-1-x64.exe)
- Ruby 2.7.2 p137 x64 (2020-10-01) (rubyinstaller-devkit-2.7.2-1-x64.exe)
また、最新の Ruby では必ず動かないというわけでもない。以下のように、32bit版なら、最新の Ruby でも DXRuby が動く…。
- Ruby 3.0.2 p107 x86 (2021-07-07) (rubyinstaller-devkit-3.0.2-1-x86.exe)
- Ruby 2.7.4 p191 x86 (2021-07-07) (rubyinstaller-devkit-2.7.4-1-x86.exe)
このことから推測できることは…。
- DXRuby 32bit版 (x86版) なら、どのRubyのバージョンでも動く。たぶん。
- DXRuby 64bit版 (x64版) は、動くRubyのバージョンが限られている。
おそらく、DXRuby 64bit版のバイナリがビルドされた時期に公開されていたバージョンの Ruby 64bit版を使えば、DXRuby 64bit版も動くのではないか、という気もする。
Ruby 64bit版は、Ruby 32bit版に比べて、拡張ライブラリのバイナリ互換性が低いということなのだろうか…?
余談。Ruby 64bit版にも対応してる gosu はどうしているのかなと gem install gosu をしてみたら、ビルドが始まった…。ということは、DevKitの導入が必須なのか…。バイナリだけを配布して動かすことを諦めている気配がする…。
◎ 動作確認時のエラーメッセージ等をメモ。 :
Ruby 3.0.2 p107 (2021-07-07) x64-mingw32 の場合。
Ruby 2.7.4 p191 (2021-07-07) x64-mingw32 の場合。
Ruby 2.7.3 p183 (2021-04-05) x64-mingw32 の場合。
Ruby 3.0.0 p0 (2020-12-25) x64-mingw32 の場合。これは動きそう。
Ruby 2.7.2 p137 (2020-10-01) x64-mingw32 の場合。これも動きそう。
Ruby 3.0.2 p107 (2021-07-07) i386-mingw32 の場合。
Ruby 2.7.4 p191 (2021-07-07) i386-mingw32 の場合。
> ruby -v ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x64-mingw32] > gem install dxruby Fetching dxruby-1.4.7.gem Successfully installed dxruby-1.4.7 Parsing documentation for dxruby-1.4.7 Installing ri documentation for dxruby-1.4.7 Done installing documentation for dxruby after 0 seconds 1 gem installed > irb irb(main):001:0> require "dxruby" <internal:C:/Ruby/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require': failed create window - CreateWindow (DXRuby::DXRubyError) from <internal:C:/Ruby/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require' from C:/Ruby/Ruby30-x64/lib/ruby/gems/3.0.0/gems/dxruby-1.4.7/lib/dxruby.rb:3:in `<top (required)>' from <internal:C:/Ruby/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:160:in `require' from <internal:C:/Ruby/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:160:in `rescue in require' from <internal:C:/Ruby/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:149:in `require' from (irb):1:in `<main>' from C:/Ruby/Ruby30-x64/lib/ruby/gems/3.0.0/gems/irb-1.3.5/exe/irb:11:in `<top (required)>' from C:/Ruby/Ruby30-x64/bin/irb.cmd:31:in `load' from C:/Ruby/Ruby30-x64/bin/irb.cmd:31:in `<main>' <internal:C:/Ruby/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- dxruby (LoadError) from <internal:C:/Ruby/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require' from (irb):1:in `<main>' from C:/Ruby/Ruby30-x64/lib/ruby/gems/3.0.0/gems/irb-1.3.5/exe/irb:11:in `<top (required)>' from C:/Ruby/Ruby30-x64/bin/irb.cmd:31:in `load' from C:/Ruby/Ruby30-x64/bin/irb.cmd:31:in `<main>'
Ruby 2.7.4 p191 (2021-07-07) x64-mingw32 の場合。
> ruby -v ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x64-mingw32] > gem install dxruby Fetching dxruby-1.4.7.gem Successfully installed dxruby-1.4.7 Parsing documentation for dxruby-1.4.7 Installing ri documentation for dxruby-1.4.7 Done installing documentation for dxruby after 0 seconds 1 gem installed > irb irb(main):001:0> require "dxruby" Traceback (most recent call last): 10: from C:/Ruby/Ruby27-x64/bin/irb.cmd:31:in `<main>' 9: from C:/Ruby/Ruby27-x64/bin/irb.cmd:31:in `load' 8: from C:/Ruby/Ruby27-x64/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>' 7: from (irb):1 6: from C:/Ruby/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:147:in `require' 5: from C:/Ruby/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:158:in `rescue in require' 4: from C:/Ruby/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:158:in `require' 3: from C:/Ruby/Ruby27-x64/lib/ruby/gems/2.7.0/gems/dxruby-1.4.7/lib/dxruby.rb:3:in `<top (required)>' 2: from C:/Ruby/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require' 1: from C:/Ruby/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require' DXRuby::DXRubyError (failed create window - CreateWindow)
Ruby 2.7.3 p183 (2021-04-05) x64-mingw32 の場合。
> ruby -v ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x64-mingw32] > gem install dxruby Fetching dxruby-1.4.7.gem Successfully installed dxruby-1.4.7 Parsing documentation for dxruby-1.4.7 Installing ri documentation for dxruby-1.4.7 Done installing documentation for dxruby after 0 seconds 1 gem installed > irb irb(main):001:0> require "dxruby" Traceback (most recent call last): 10: from c:/Ruby/Ruby27-x64/bin/irb.cmd:31:in `<main>' 9: from c:/Ruby/Ruby27-x64/bin/irb.cmd:31:in `load' 8: from C:/Ruby/Ruby27-x64/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>' 7: from (irb):1 6: from C:/Ruby/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:147:in `require' 5: from C:/Ruby/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:158:in `rescue in require' 4: from C:/Ruby/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:158:in `require' 3: from C:/Ruby/Ruby27-x64/lib/ruby/gems/2.7.0/gems/dxruby-1.4.7/lib/dxruby.rb:3:in `<top (required)>' 2: from C:/Ruby/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require' 1: from C:/Ruby/Ruby27-x64/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require' DXRuby::DXRubyError (failed create window - CreateWindow)
Ruby 3.0.0 p0 (2020-12-25) x64-mingw32 の場合。これは動きそう。
> ruby -v ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x64-mingw32] > gem install dxruby Fetching dxruby-1.4.7.gem Successfully installed dxruby-1.4.7 Parsing documentation for dxruby-1.4.7 Installing ri documentation for dxruby-1.4.7 Done installing documentation for dxruby after 0 seconds 1 gem installed > irb irb(main):001:0> require "dxruby" => true
Ruby 2.7.2 p137 (2020-10-01) x64-mingw32 の場合。これも動きそう。
> ruby -v ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x64-mingw32] > gem install dxruby Fetching dxruby-1.4.7.gem Successfully installed dxruby-1.4.7 Parsing documentation for dxruby-1.4.7 Installing ri documentation for dxruby-1.4.7 Done installing documentation for dxruby after 0 seconds 1 gem installed > irb irb(main):001:0> require "dxruby" => true
Ruby 3.0.2 p107 (2021-07-07) i386-mingw32 の場合。
> ruby -v ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [i386-mingw32] > gem list | grep dxruby dxruby (1.4.7) > irb irb(main):001:0> require "dxruby" => true
Ruby 2.7.4 p191 (2021-07-07) i386-mingw32 の場合。
> ruby -v ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [i386-mingw32] > gem list | grep dxruby dxruby (1.4.7) > irb irb(main):001:0> require "dxruby" => true
[ ツッコむ ]
以上です。