mieki256's diary



2013/05/08(水) [n年前の日記]

#1 [prog] ruby-opengl を Windows7上で使おうとしてハマる

環境は、Windows7 x64 + Ruby 1.9.3 p392 mingw32版。

症状。 :

本来、以下だけで使えるはずだけど。
gem install ruby-opengl
実際にやってみると問題が。

ruby-opengl と一緒に、opengl というモジュール?ライブラリ?も入るのだけど。
opengl (0.8.0 x86-mingw32)
ruby-opengl (0.61.0)

ruby-opengl を使ったスクリプトを実行すると、その opengl.rb が大量の warning を出す。
C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant TRUE
C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant FALSE
C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM
C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM_ALPHA_BITS
(以下略)

opengl だけアンインストールすると…。
gem uninstall opengl
C:/ruby/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- glut (LoadError)
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require'
        from rubyopengltest1.rb:11:in `<main>'

試しに、ruby-opengl は入れず、opengl だけインストールすると…。
gem install opengl
C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant TRUE
C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant FALSE
C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM
C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM_ALPHA_BITS
以下略
どうやら opengl をインストールするだけでも、ruby から opengl が使えるようにも見える。ただ、この大量の warning は困る。

原因。 :

Ruby/SDLが絡んでた。rubysdl-2.1.1.1-mswin32-1.9.1-p243.zip を解凍してインストールする際、以下のファイルがコピーされるのだけど。ソレが、ruby-opengl 側の何かと競合するっぽい。
C:\ruby\lib\ruby\site_ruby\1.9.1\i386-msvcrt\opengl.so


また、ruby-opengl のサイトから辿って入手できる ruby-opengl-0.60.1-x86-mswin32-ruby19.gem (「mswin32」がついてる点に注意)をインストールすると、色々不具合が起きるという話も見かけた。

原因が分かるまで、5時間ぐらいアレコレやりました…。トホホ。

解決方法。 :

  1. opengl、ruby-opengl をアンインストールしておく。(gem uninstall xxxx)
  2. Ruby/SDL がインストールした C:\ruby\lib\ruby\site_ruby\1.9.1\i386-msvcrt\opengl.so を、リネームして使えないようにしておく。(opengl.so.sdl_ver とか。) これはこれで、もしかすると、Ruby/SDL使用時に問題が出るかもしれないけれど…。
  3. ruby-opengl-0.60.1-x86-mingw32-ruby19.gem を入手してインストール。「mswin32」じゃなくて、「mingw32」なことに注意。

ruby-opengl-0.60.1-x86-mingw32-ruby19.gem は、 _ruby-opengl gem for Windows の一番下のほうで、Trebor777さんが公開してくれている。 _opengl + ruby on Windows - 田舎でプログラミング で紹介されてました。助かりました。

ちなみに、Ruby/SDL の opengl.so をリネームするだけでも、gem install ruby-opengl するだけでスクリプトが動いてるように見える…。けど、不安なので mingw32 版の ruby-opengl を入れておこうかなと。

動作確認。 :

_RubyでOpenGLをやってみる - フリップフラップ で書かれてるスクリプトを使って動作確認してみたり。teapot、たしかに表示されました。

以上です。

過去ログ表示

Prev - 2013/05 - 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