2011年1月28日

[ruby-list:47787] Re: Ruby1.9.2 と RDEについて

前川さん

信岡です。
私も前川さんと同じ Windows XP (32-bit) 環境で RDE 環境を構築してみましたが、
同じく cygruby1919.dll 見つからないというエラーが発生しました。 どうやら RDE が
使用する rde.so は cygruby1919.dll に依存しているようです。

rde.so は cygwin 環境の ruby 用みたいですので、1 つの解決策は現在インストール済み

の Ruby (MinGW 版) の代わりに、自分で cygwin 上で Ruby のビルドを行って
(または Cygwin 版のバイナリをインターネット上から取得して) それを使う、ということになります。
自分でビルドをする場合は、cygwin 本体のインストールが必要になります。

また、次のページで別の解決策を見つけました。
http://hpcgi2.nifty.com/sakazuki/forum/wwwforum.cgi?id=1&az=thread&number=119
rde.so を使う代わりに、下記のコードを rde.rb として保存して使う、というものです。
とりあえず私の環境で rde.so の代わりに rde.rb を使ってみたところ、とりあえずエラーは
発生しなくなりました。 が、RDE でのデバッグはちゃんと実行できていないような気がします。。
(デバッガの一時停止などがうまく機能しない? 正しい動きがわからないのでちょっとよくわかりませんが...)

---- rde.rb ここから ----
require 'Win32API'

module Rde
FILE_MAP_WRITE = 0x2
FILE_MAP_READ = 0x4
FILE_MAP_ALL_ACCESS = 0x6 #???
@find_window = Win32API.new('user32.dll', 'FindWindow', %w(p p), 'l')
@open_file_mapping = Win32API.new('kernel32.dll', 'OpenFileMapping',
%w(l i p), 'l')
@map_view_of_file = Win32API.new('kernel32.dll', 'MapViewOfFile', %w(p
i i i i), 'p')
@unmap_view_of_file = Win32API.new('kernel32.dll', 'UnmapViewOfFile',
%w(p), 'i')
@close_handle = Win32API.new('kernel32.dll', 'CloseHandle', %w(l), 'l')
def stop?
return (@find_window.call(0, "rdestopper") != 0)
end
def path
hMapfile = @open_file_mapping.call(FILE_MAP_ALL_ACCESS, 0, "Rde")
if (!hMapfile)
puts("fail to file mapping")
return -1
end
lpRdePath = @map_view_of_file.call(hMapfile, FILE_MAP_ALL_ACCESS, 0, 0, 0)
if (lpRdePath.nil?)
puts("fail to MapViewOfFilw")
return -1;
end
if (!lpRdePath)
@unmap_view_of_file.call(lpRdePath)
end
@close_handle.call(hMapfile)
return lpRdePath
end
module_function :stop?, :path
end


if $0 == __FILE__
p Rde.path
p Rde.stop?
end
---- rde.rb ここまで ----

Windows 環境における Ruby に関しては全然詳しくないので
もっと良い方法など知っている方が居ましたら補足をお願いします。

--
信岡 ゆう (NOBUOKA Yu)
http://www.vividcode.info/


投稿者 xml-rpc : 2011年1月28日 05:59
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/101646
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。