VisualuRuby

cygwinruby 1.9.3にvisualurubyをインストールする

http://www.osk.3web.ne.jp/~nyasu/vruby/core.html
からC言語拡張部分(vrswin)とRuby部分(vruby)のソースを
ダウンロードできる。


vrubyのインストールは、vruby080229.lzhを展開し、
lib/vr
C:\cygwin\lib\ruby\1.9.1\vr\...
にコピーした。
(vrinstall.rbはftoolsが入ってないため動作しなかった)


vrswin.soはいくつかバイナリが公開されているが、
ftp://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ext/
cygwinでは動作しなかった。


$ ruby -e 'require "vr/vruby"'
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': No such file or directory - /usr/lib/ruby/site_ruby/swin.so (LoadError)
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/vr/vruby.rb:19:in `'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from -e:1:in `
'

$ ldd /usr/lib/ruby/site_ruby/swin.so
ntdll.dll => /cygdrive/c/Windows/SysWOW64/ntdll.dll (0x77520000)
snxhk.dll => /cygdrive/c/Program Files/AVAST Software/Avast/snxhk.dll (0x6f230000)
KERNEL32.dll => /cygdrive/c/Windows/syswow64/KERNEL32.dll (0x76240000)
KERNELBASE.dll => /cygdrive/c/Windows/syswow64/KERNELBASE.dll (0x76380000)
??? => ??? (0x10000000)


vrswin090207.lzh を展開し、readmeにしたがって
ビルドする。


$ ruby extconf.rb
checking for main() in -lolepro32... yes
checking for main() in -luuid... yes
checking for main() in -lole32... yes
checking for main() in -lwinspool... yes
checking for main() in -lcomctl32... yes
checking for main() in -lcomdlg32... yes
checking for main() in -lgdi32... yes
checking for main() in -luser32... yes
checking for main() in -lkernel32... yes
swin supports m17n.
creating Makefile

$ make
$ make install
/usr/bin/mkdir -p /usr/lib/ruby/site_ruby/1.9.1/i386-cygwin
/usr/bin/install -c -m 0755 swin.so /usr/lib/ruby/site_ruby/1.9.1/i386-cygwin

これでインストール終わり。


日本語はUTF-8でないとダメっぽい。
vrubyのtest/sample.rbを実行する場合は
UTF-8に変換しないとエラーがでる。


$ ruby sample.rb
sample.rb:12: invalid multibyte char (US-ASCII)
sample.rb:12: syntax error, unexpected '{', expecting ')'
addControl(VRButton, "btn1","▒{▒^▒▒▒▒▒▒",80,50,100,40)

変換すればOK