mieki256's diary



2021/08/13(金) [n年前の日記]

#2 [dxruby] DXRuby 64bit版が動かなくて悩んだ

DXRuby 1.4.7 から、64bit版も同梱されるようになったと知った。素晴らしい。

しかし、Windows10 x64 21H1上で DXRuby 1.4.7 の動作確認をしてみたら、Ruby のバージョンによっては、require "dxruby" をしただけでエラーが出て悩んでしまった。

調査結果。 :

以下の Ruby バージョンでは DXRuby 1.4.7 64bit版が動かない。require "dxruby" をしただけでエラーが出る。
  • 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 -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

以上です。

過去ログ表示

Prev - 2021/08 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project