[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 01/31 00:01 / Filesize : 175 KB / Number-of Response : 612
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【ActiveScript】RubyをWindowsで使うスレ【GUI】



1 名前:デフォルトの名無しさん [2006/08/08(火) 19:08:09 ]
他プラットホームとの互換性なんかいらん!
漏れはWindowsの上だけで快適に使いたいんだ!
Windows独自の技術的な話題や、
Windows版だけのrubyの問題について語るスレ。

■ruby
 www.ruby-lang.org/ja/

■ruby関連スレ
 ・Rubyについて Part 22 (本スレ?)
  pc8.2ch.net/test/read.cgi/tech/1147897915/
 ・Ruby初心者スレッドPart7
  pc8.2ch.net/test/read.cgi/tech/1154077799/l50



267 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 18:39:08 ]
右クリックでlbuttonupが来ると?

268 名前:264-265 mailto:sage [2007/07/14(土) 18:48:10 ]
レスありがとうございます。

>266
そうですよね。
普通イベントハンドラがデフォルトで定義されているのですが
vruby の VRListview では定義されてないようです。

Spy++でみると、WM_RBUTTONDOWN, WM_RBUTTONUP
などのメッセージは ListView に来てます。

>267
失礼・・。まずは lbuttonup で試してました。
rbuttonup と読み替えてください。
最終的にやりたいことは右クリックを拾う、です。


lv1_dblclicked が呼ばれると、なぜか
lv1_lbuttonup が同時に後から呼ばれていることを発見。

ウィンドウメッセージは ListView に飛んできてるので
おそらくは vruby 側で何か処理を足してやれば
めでたくマウスの右クリックがとれるはずなので
もうちょいがんばってみます。

269 名前:264-265 mailto:sage [2007/07/14(土) 20:55:07 ]
う〜む…;

VRComCtlContainer#self_wmnotify(msg)
にいったんメッセージが飛んできて、ディスパッチされるらしい。

ハンドラの名前は VRNotifyControl#notifycontrolinit で登録されてる。
addNotifyHandler(0xfffffffe,"clicked",MSGTYPE::ARGNONE,nil)
addNotifyHandler(0xfffffffd,"dblclicked",MSGTYPE::ARGNONE,nil)
 :
(FormDesigner を使っているとわからないメソッド)

MyForm#lv1_clicked を定義してみたら、イベントが飛んできて捕まえられました。
ただ lv1_lbuttonup(shift, x, y) と違って座標などがとれない。

MyListview クラスに include VRMouseFeasible すると、
リストビューをダブルクリックしたときにのみ
MyListview2#self_lbuttonup(shift, x, y) がきちんと呼ばれる
不思議な現象になる。

たぶん理由があって、ちゃんと突き詰めれば動くのだろうけど、もういいぽ・・。
とりあえず lv1_clicked にて hittest を適当に処理することで
対処することに決めました。5 時間かかった〜…。

270 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 20:57:05 ]
なにをごちゃごちゃやってるのか知らんけど
VRubyのリファレンスちゃんと嫁

271 名前:264-265 mailto:sage [2007/07/14(土) 21:09:06 ]
正しい。
でもリファレンス嫁はちょっと漠然としてて範囲が広くてきっついよ。
ここ見れ、とか、メソッドやクラス名のヒントを
つ[メソッド名]
とかやってくれた方が助かるわー迷ってるんだから;

272 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 21:43:42 ]
self_rbuttondown

273 名前:264-265 mailto:sage [2007/07/14(土) 22:59:03 ]
>272
うぉぉ! できた!
rbuttondown(shift, x, y) と lbuttondown(shift, x, y) は、
include VRMouseFeasible でとれた。
(buttonup 系はなぜかとれない)
どうもありがとう!非常に助かりました m(_ _)m

www.osk.3web.ne.jp/~nyasu/vruby/referer/vr/VRMouseFeasible.html
ここにあるのはなんだ〜

274 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 23:24:17 ]
おめでとう

漏れも
>>264-268
見てたときは思い出さなかったんだけど
>>269
の5時間かかった〜っていうのを見て
3年ほど前に同じ問題で半日ほどはまったことがあるのを思い出した



275 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 13:50:21 ]
vruby でウィンドウが閉じるときに呼ばれるような
onClose とか onDestroy ってどこかにありますか?
X ボタンで閉じたときに終了処理をするイベントが拾えなくて
困ってるんですけど、msghandler をいじるしかないのかな?

と思って grep したら
include VRClosingSensitive
して self_close で拾えばいいのか。OK。自己解決。



276 名前:デフォルトの名無しさん [2007/08/05(日) 11:49:21 ]
.

277 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 18:07:24 ]
メモ
font = @screen.factory.newfont("MS Gothic", -13)
self.class::const_set("DEFAULT_FONT", font)
で、デフォルトフォント全変更

278 名前:デフォルトの名無しさん [2007/08/25(土) 09:33:44 ]
>>258
試してみたいのですが、すでにうpろだから消えているような。。。

279 名前:デフォルトの名無しさん [2007/08/25(土) 09:34:41 ]
>>66
vrubyで画面に出てくるところを動かすときは、GC.disableを一時的にするといいって聞いたことがある。

280 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 09:58:26 ]
rbnamazuってどこからDLできますか?
本家のダウンロード、リンク切れになってる。
ttp://www.namazu.org/ruby-namazu/index.html.ja
昨夜から探して別のところで0.1を拾えただけ(最新0.4)
ヘルプ!

281 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 10:25:25 ]
>>278
どもです。
でも、趣味なのでもうプログラミング熱は冷めてしまいましたw

gzm.s201.xrea.com/openport.zip

282 名前:デフォルトの名無しさん [2007/08/25(土) 17:50:24 ]
>>281
ありがとうございます。いただいていきます。
まぁ、自分の勉強のために見たいという気持ちもあるのでっ。

使ってみてですが、「ポート解放失敗」(泣)
プログラミング熱は冷めたとのことですが、Aterm WD701CVでの失敗を報告しておきます。

283 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 19:12:39 ]
>>282
あらら、失敗しましたかw
いやいや、私もRubyでソフトを作るのはこれが2作目です。
今度はC#をやろうと思い、挫折して、プログラミング熱が冷めましたw

284 名前:デフォルトの名無しさん mailto:sage [2007/08/29(水) 04:43:00 ]
FormDesignerで最大化ボタンオフでタブストップをやりたいと思ったのですができず…

require 'vr/vruby'
require 'vr/vrcontrol'
class Form1 < VRForm
def construct
self.maximizebox=false
self.caption = 'form1'
self.move(140,124,335,218)
addControl(VREdit,'edit1',"edit1",38,30,160,30,0x10000)
addControl(VRButton,'button1',"button1",200,30,88,32,0x10000)
end
end
VRLocalScreen.start Form1

WS_OVERLAPPEDWINDOW & ~WS_MINIMIZEBOX的なやり方って存在しないのですかね?

285 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 02:21:17 ]
TABSTOPはダイアログでしか使えんよ。
そして、maximizebox=はダイアログでは使えんらしい。(なぜか)
ちょっと書き換えるが、
require 'vr/vruby'
require 'vr/vrcontrol'
require 'vr/vrdialog'

class Form1 < VRModalDialog
def construct
self.maximizebox=false
self.caption = 'form1'
self.move(140,124,335,218)
addControl(VREdit,'edit1',"edit1",38,30,160,30,0x10000)
addControl(VRButton,'button1',"button1",200,30,88,32,0x10000)
end
def maximizebox=(bool) #こぴぺ&修正
VRWinComponent::WinStyle.new(self).setter(WStyle::WS_MAXIMIZEBOX, bool)
end
end
VRLocalScreen.openModalDialog nil,nil,Form1


かな。



286 名前:デフォルトの名無しさん mailto:sage [2007/09/05(水) 16:39:41 ]
FormDesignerだけど、例えばEditコントロールを貼っつけて、
マウスで適当にクリックしたりしてると、
勝手にコントロールの位置がずれたり、
サイズが小さくなったりするんだけど俺だけ?
イライラするのですが回避方法ないでしょうか。

287 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 07:26:00 ]
俺もそれよくなる。
結局height値を直接打って元に戻すしか方法ないのかね。

VRTabbedPanelで各タブパネルの上でカラー選択ダイアログを直接呼び出そうとするとエラーがでるので

@tab.send_parent2 1,"hoge","clicked"

で親に渡してダイアログを呼び出してるんだけど、取得した色番号を元のパネルのEditに戻したいんだけど
def tab_panel1_hoge_clicked
@tab.panels[1].foo.text = chooseColorDialog.to_s
end
でできなくorz
親から孫を直接指定ってどうやるんですか?



288 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 21:06:44 ]
それにしても、みんなよくVisualuRuby使う気になれるな
俺はApolloを先に使い始めたから、どうしてもVisualuRubyのAPIに慣れない

機能面の差はそんなにないと思うんだけど
クラスやメソッドの構成に癖があって、非常に扱いづらい……
慣れれば何とかなるのかな

289 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 03:47:04 ]
>>287
親に渡さなくても直接タブパネルにコモンダイアログを呼び出せばOK
公式マニュアルにはないけど、カラー選択なら
SWin::CommonDialog::chooseColor(nil, 0)
で、出るはず。

>>288
VisualuRubyはexerbで固めるとdllなしのスタンドアロンツールが作れるからなぁ。
(gemとか使うとdllが必要だが)
Apolloは別途Delphiの知識が必要な感じもするし、純粋なGUIプログラムなら大方はDelphiでできるし。
Delphi+Rubyの利点って正規表現をカバーぐらいしか思い浮かばない(無知でごめんよ)

ただ、マニュアル面での充実や、Vistaを含めマルチプラットフォームの可能性は断然Apolloだろうね。


290 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 03:59:38 ]
GtkにしたらVisualuRuby使う気なくなった
ごめんよ

291 名前:デフォルトの名無しさん [2007/09/19(水) 08:26:46 ]
> ただ、マニュアル面での充実や、Vistaを含めマルチプラットフォームの可能性は断然Apolloだろうね。

Apolloは、Windowsでしか動かないよ
それと、更新されていないApolloは、Vista非対応のはず。(動くことは動くか)
Delphi2007でコンパイルしなおさないといけないと思う

292 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 09:04:51 ]
コード手書きでGUIとかありえない。
20年前じゃないだからさ。

293 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 23:43:03 ]
HTMLやTcl/tk(Ruby/tkにあらず)なら手書きでも良いような気がする
要は現状でGUIを書きやすくて充実してるライブラリが無いって話じゃね?

294 名前:289 mailto:sage [2007/09/20(木) 02:16:54 ]
>>291
言葉足らずでごめん、VisulauRubyはwin32べったりだから、比較対象として選択肢がDelphi
でコンパイルできたりすることも可能という『可能性』ってことね。
(断然って言い方がマズかったorz)

> コード手書きでGUIとかありえない。
どこまでのプログラムを手書きと言うのか分からないけど、少なくともVisualuRubyにはFormDesigner
というGUIビルダがあるのがあるし、ApolloもDelphiのGUIビルダが使えるし、完全に一から手書きし
てるというわけでもないのでは?

自分は邪道編を見て、webもGUIもできる言語って凄いと思ってRubyを使い出したので(当時は他
のLLでもGUIできるって知らなかった)
Ruby自体がGUIプログラムをやるための言語ではないが、マニュアルが極端に少ないってが問題の1つだと思うよ。

295 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 03:52:12 ]
>>294
「断然って言い方」だけじゃなくて、通常そういうのはマルチプラットフォー
ムとはいわんから、用語や日本語の使いかたがマズかったのでは。




296 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 12:26:42 ]
vrubyとMozilla ActiveX Controlを使ってgeckoエンジンのwebブラウザを作成したいのですが
ACTIVEXCINFOでできますか?

smpleだとIEの例はあるのですが、ACTIVEXCINFOが分からず四苦八苦しているので、どのよ
うに調べれはよいのですか?

297 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 07:12:54 ]
vrubyってクラシックな視覚スタイルしか作れないのですか?
無いとしたら、今後XP(Luna)やVista(Aero)の対応予定とかありませんか?

# Ruby/TkだとTileを使えばXP風味になりました
# Ruby初心者スレから誘導されてきました

298 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 09:30:28 ]
>>297
XP風にするだけならvrubyに限らずこの方法でいける
ttp://www.lhut32.com/WinXP.html

299 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 14:04:23 ]
>>296
ACTIVEXCINFO =["Mozilla.Browser","DWebBrowserEvents"]


300 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 14:10:26 ]
ACTIVEXCINFOは、ものすごく効率が悪いけど soleb
ttp://homepage1.nifty.com/markey/ruby/win32ole/index.html
で、それっぽいの(これが難しい)を探せばなんとかなります。



301 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 03:30:08 ]
>>299
おお、これでサンプルを変更したら動きました。
ありがとうございます。

>>300
効率が悪いとは具体的にどうしてでしょうか?

solebでCOMから扱うとなると、実際にはdllだけではなくMozillaそのものをDLして
埋め込むという感じになると思うのですが、やりたいことはWEBrickでプロキシ通
信したものをgeckoエンジン表示させたいのですが…


302 名前:デフォルトの名無しさん [2007/09/26(水) 12:47:16 ]
solebはActiveXコントロールの情報も出ますよ。
ただ、むちゃくちゃイッパイ情報が出るので、
探すのが効率悪い。

303 名前:デフォルトの名無しさん [2007/09/26(水) 14:18:57 ]
Windowsで現在実行中のプロセスを列挙したいのですがどうすればいい?

Win32APIのEnumProcessesとかを使うと出るらしいが
使い方がわからん。

使い方をおせーて

304 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 16:28:48 ]
Windows NT系上での実行を想定してるんですが、
キャラクタセットについて下記の2案だとどっちが良いと思いますか?

案1
・ソースプログラムをUTF8で書く
・Ruby/TkへStringを投げるときはそのまま
・コマンドプロンプトへStringを出力するときはSJISへ変換してやる

案2
・ソースプログラムをSJISで書く
・Ruby/TkへStringを投げるときはUTF8へ変換してやる
・コマンドプロンプトへStringを出力するときはそのまま

305 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 16:45:47 ]
と思ったけどプログラムコードの先頭で
#! ruby -Ks
って指定してやれば勝手にやってくれるのね・・・



306 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 06:42:19 ]
>>303
pc11.2ch.net/test/read.cgi/tech/1189255282

307 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 01:06:07 ]
たぶんActiveScriptRuby1.8.637に更新してからだと思うけど
VisualuRuby使ったプログラムで
定数の再定義警告が出るようになりました。

ただ、Rubyインタプリタで実行したときは
警告されません。
Exerbで作った実行ファイルを実行したときに
警告が出ます。

俺だけなのかなぁ?

308 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 06:38:02 ]
Ruby/Tkとvrubyを混在させるにはどうしたらいいの?

Tk.mainloop と VRLocalScreen.messageloop を一緒に走らせないとならないっぽいんだけど無理かな?

309 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 10:32:16 ]
>>307
> VisualuRuby使ったプログラムで
> 定数の再定義警告が出るようになりました。
再現できるソースはない?


310 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:16:05 ]
>>309

test.rb
---
require 'swin'
require 'vr/vrcontrol'
require 'vr/vrdialog'
---
これをrubyインタプリタで実行しても警告は出ない
(-W2オプション付きでも)

(続く)

311 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:23:15 ]
test.exy
---
general:
 startup: test.rb
 core: cui
 kcode: sjis
file:
 test.rb:
 Win32API.so:
  file: C:\Ruby\lib\ruby\1.8\i386-mswin32\Win32API.so
  type: extension-library
 swin.so:
  file: C:/Ruby/lib/ruby/site_ruby/1.8/i386-msvcrt/swin.so
 vr/vruby:
  file: C:\Ruby\lib\ruby\site_ruby\1.8\vr\vruby.rb
 vr/winconst:
  file: C:\Ruby\lib\ruby\site_ruby\1.8\vr\winconst.rb
 vr/compat/rubycompat:
  file: C:\Ruby\lib\ruby\site_ruby\1.8\vr\compat\rubycompat.rb
 vr/rscutil:
  file: C:\Ruby\lib\ruby\site_ruby\1.8\vr\rscutil.rb
 vr/contrib/vrwincomponent:
  file: C:\Ruby\lib\ruby\site_ruby\1.8\vr\contrib\vrwincomponent.rb
 vr/vrcontrol:
  file: C:\Ruby\lib\ruby\site_ruby\1.8\vr\vrcontrol.rb
 vr/sysmod:
  file: C:\Ruby\lib\ruby\site_ruby\1.8\vr\sysmod.rb
 vr/compat/vrcontrol.rb:
  file: C:\Ruby\lib\ruby\site_ruby\1.8\vr\compat\vrcontrol.rb
 vr/vrdialog:
  file: C:\Ruby\lib\ruby\site_ruby\1.8\vr\vrdialog.rb
---

312 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:26:15 ]
>>311 のレシピファイルを使ってexerbで実行ファイルを作って
それを実行すると
vr/vrcontrol:1217: warning; already initialized constant WM_VSCROLL
などが出る。
(全角スペースでインデントしています。半角に変換して使ってください。)

まあ、エラーじゃないので、特に問題は無いんですけど、
なんか心臓に悪い。

313 名前:デフォルトの名無しさん [2007/10/22(月) 17:44:18 ]
ttp://www.itmedia.co.jp/enterprise/articles/0710/22/news002.html
ttp://itpro.nikkeibp.co.jp/article/NEWS/20071022/285089/?ST=oss
ttp://itpro.nikkeibp.co.jp/99/ruby/index.html


314 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 16:07:27 ]
RubyをMac OS Xで使うスレが無いのが寂しい
Ruby/Cocoa使いとか居ない?

315 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 19:03:14 ]
>>314
"ruby cocoa" site:2ch.net でググると
いくつかのスレで話題になっているようですね。
必要であればスレ立てしてみてはいかがでしょう。



316 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 19:16:56 ]
RubyCocoaは明日から本番だしな。ちょうどいいんじゃね?

317 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 01:53:10 ]
img.baguwen.org/061217/20061217213838751.jpg

318 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 06:29:51 ]
これ中国の修行僧が作った道だっけ?

319 名前:デフォルトの名無しさん [2007/11/14(水) 01:55:36 ]
ActiveSupportのようにライブラリを動的に読み込むスクリプトを、
exerbで実行ファイル形式にする方法ない?

320 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 13:17:53 ]
必要なやつを全部レシピに追加しとけば?


321 名前:デフォルトの名無しさん [2007/11/15(木) 01:31:37 ]
便乗質問なのですが、hpricotっていうライブラリはc言語をコンパイルしたものが
含まれているって聞いたのですがそういうのもexerbに取り込むことが出来るのでしょうか。



322 名前:デフォルトの名無しさん [2007/11/16(金) 00:52:44 ]
>321
全然オッケー

323 名前:デフォルトの名無しさん [2007/11/29(木) 11:10:51 ]
"Adding Ruby to the .NET stable of languages and unlocking .NET to Ruby programmers."
rubydotnet.googlegroups.com/web/Home.htm

Breaking News! (20th November 2007)
Ruby.NET version 0.9 has just been released

324 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 13:33:37 ]
Windows における Ruby 開発環境の構築
taylor.gotdns.org/ruby.html

325 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 13:50:52 ]
>>323
とりあえず、VS2005ProにVS2005SDKとRuby.NET、VSRuby.NETをインストールしても、
VSに統合されなかったということだけは報告しておこう。




326 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:38:55 ]
>>325
スタート > すべてのプログラム > Ruby.NET > Visual Studio (for Ruby)

327 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 16:27:44 ]
>>326
おお、動いた。ありがとう。
とりあえず、Windowsアプリケーションで、ButtonとListboxをFormに貼り付けて
Clickイベントを書いたら動いた!
(大文字小文字をちゃんとしないといけないんだね・・・)

def button1_Click(sender,e)
  listBox1.Items.Add(Time.now.to_s)
end

だが、ビルドもプロジェクトの保存もできない・・・。
休みの間にドキュメント読もう。

328 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:37:39 ]
俺も使えた。
でも、インテリセンスが効かないのが最悪。しかも大文字小文字を区別するし。

329 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 12:16:28 ]
>>328
> しかも大文字小文字を区別するし。
Ruby用のIDEで区別しなかったら使いものにならんだろ。


330 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 12:48:32 ]
>>329
.NETのメソッドヤプロパティが全てcase sensitiveなのは使いづらい。

331 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 14:59:27 ]
>>330
Ruby.NET的にはそういうのはどうなんの?
大文字のと小文字のメソッドが全部定義されてる?


332 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 15:01:16 ]
>>331
定義されていない。
いちいちAdditemなのかAddItemなのかを調べる必要がある。

333 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 16:45:30 ]
え、インテリセンス使いまくりな俺には厳しい仕様だなー

334 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 22:55:31 ]
>>332
> 定義されていない。
てことはmethod_missing使って呼び出す?

335 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 01:21:38 ]
>>310 を書いた者ですが、
vr/vruby: などと書いているところを
vr/vruby.rb: というように拡張子まで含めて書くと
警告が出なくなりました。

というか、何で含めて書かなかったのだろう。
んー。



336 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 12:34:35 ]
Rubyist Magazine出張版 Ruby on Windows
www.amazon.co.jp/dp/4839926689/

337 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 20:52:08 ]
(追記) Windows における Ruby のバイナリ互換性について

ビルド環境として MinGW、 VC++6、VC++7、VC++8を考えます。
で、ちゃんと検証したわけではありませんが、おそらく以下が成立するはずです。

MinGWで作ったRubyとVC++6で作った拡張ライブラリは一緒に使える。逆も可。
MinGWで作ったRubyとVC++7で作った拡張ライブラリは一緒に使えない。逆も不可。
MinGWで作ったRubyとVC++8で作った拡張ライブラリは一緒に使えない。逆も不可。
VC++6で作ったRubyとVC++7で作った拡張ライブラリは一緒に使えない。逆も不可。
VC++6で作ったRubyとVC++8で作った拡張ライブラリは一緒に使えない。逆も不可。

これは利用されるC Runtime libraryの種類が問題になっています。
一応Windowsには異なるビルド環境で作ったオブジェクトファイルを混ぜても
「だいたい」問題なく動作させるための機構があるらしいのですが、
Rubyの場合問題が起こる部分を使っている、ということらしいです。
最近のRubyでは、ビルド時に異なるビルド環境を使おうとしてもできないような
対策が施されています。

そこで、バイナリ配布されているrubyの処理系は大半がVC++6かMinGW で
ビルドされているため、人に配布するためのバイナリを作るのであれば
このどちらかを使うべき、ということになります。

ttp://www.kmc.gr.jp/~ohai/diary/?date=20070305

338 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 21:11:39 ]
>>337
それがどうかしたか?

339 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 23:33:10 ]
>>337
VC7とVC8間も互換性ないからな。
VC9も同様。


340 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 03:26:16 ]
>>339
VC8 なんてSPのあるなしでも互換性がないんじゃなかったっけ?


341 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 10:55:26 ]
>>340
ない。

342 名前:デフォルトの名無しさん [2007/12/10(月) 16:10:11 ]
Ruby+vruby+exerbで最適な画像処理用ライブラリって何でしょうか。
jpgを読みこんで、パレットをいじったりして、bmpで出力したいのですが。。。

343 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 19:33:35 ]
>>342
rcairoかrmagick

344 名前:デフォルトの名無しさん [2007/12/11(火) 21:52:43 ]
>>337-339
知らんかった
DLL化された拡張ライブラリの話しだよね?

困るかも

345 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 13:21:49 ]
>>344
文句があるならMicrosoftへ。



346 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:30:40 ]
ttp://www.garbagecollect.jp/~usa/d/200712b.html#id20071213_P1

>_ なんかいろいろ言ってる間に[ruby-core:14039]が。
>
>Anyway, the MinGW guys just commited a few changes that will allow you
>target specific MSVCRT versions with the same compiler, removing the
>pain to create extensions with gcc for ruby build with VC6/8/9.
>
>ですってよ。マジすか。福音キター!
>
>_ こうなってくると前提が変わってきて、mingwがMSVCRT.dllとリンクするからVC6が望ましい、という理屈は成立しなくなるんだよね。
>じゃあみんなでVC9に行ってみる?

347 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 20:15:52 ]
Cで拡張ライブラリを書いたときに、拡張ライブラリから関数ポインタを返してRuby側でその関数を実行するにはどうしたらいいですか。


348 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 20:59:03 ]
そんなことよりモジュール関数にするとか

349 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 01:37:03 ]
関数ポインタをRuby上で表現できるようなクラスを書くしかないと思うけど。
でも結局DLの車輪の再発明のような気がする。

350 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 07:50:10 ]
>>348>>349
つまり直関数ポインタそのものを渡してもRuby側で実行できなくて、
たとえば拡張ライブラリを以下のようにするしかないってことですか。

//これをRuby側で実行したい。
hoge (*pf)(hage x);

//これをエクスポートしてRuby側で使う。
hoge f(hage x)
{
 if(pf)return pf(x);
else return moge;
}

351 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 08:08:29 ]
拡張ライブラリの作り方くらい読めよ

352 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 13:37:13 ]
>>350
そもそも、どうして関数ポインタをRuby上で扱いたいの?

353 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 13:40:16 ]
関数ポインタをシェルスクリプトに返しても呼べないが如し

354 名前:350 mailto:sage [2007/12/19(水) 18:16:05 ]
レスありがとうございます。

>>351
>>350のソースはSWIGにかけてからdllを生成するつもりだったんですが、その点を書くのを忘れました。ごめんなさい。

>>352
どうして関数ポインタをRuby上で扱いたいかというと、既存のC++のクラスに関数ポインタのメンバがあって、
それをRubyでも使いたかったんです。

>>353
関数ポインタは使えないのですね。
とりあえずC++のソースの追加は必要ですが、>>350のようにやればRubyでも使えるようになると思っているので
それでやって見ます。もっと楽な方法があったら教えてください。



355 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 20:31:50 ]
Windowsだったらsuikyoってゆーローマ字変換ライブラリは使えませんか??



356 名前:350 mailto:sage [2007/12/25(火) 20:31:37 ]
すいません。350です。
また教えてください。

とりあえず簡単な拡張ライブラリを作ったのですが、なぜかloadできません。

mytest.soというファイルをカレントディレクトリにおいて
以下のようなスクリプトを流すと以下のようになります。

----スクリプト-----
f=open('./mytest.so')
p f
require './mytest'
----結果----------
#<File:./mytest.so>
./mytest.so: No such file or directory - ./mytest.so (LoadError)
from test.rb:3
-------------------
openではファイルが開けるのにrequireでは見つからないといわれてしまいます。
なにが悪いのでしょうか。
環境はwinXP+cygwinです。
rubyのバージョンは1.8.4 (2005-12-24) [i386-cygwin]です。

357 名前:デフォルトの名無しさん [2007/12/26(水) 04:18:49 ]
$LIB_PATH には、./は入るんじゃなかったけ?
$SAFEが1以上なら、入らんみたいだが・・・

358 名前:デフォルトの名無しさん [2007/12/26(水) 04:19:21 ]
とりあえず、プロンプトで、これどうなります?
$ ruby -e 'puts $:'

359 名前:350 mailto:sage [2007/12/26(水) 07:25:56 ]
>>358
以下のようになりました。

/usr/lib/ruby/site_ruby/1.8
/usr/lib/ruby/site_ruby/1.8/i386-cygwin
/usr/lib/ruby/site_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/i386-cygwin
.

360 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:06:46 ]
ちゃんと、最後に、 ". "が入っているから、
上手くいくはずなんだがな・・・

361 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 05:29:34 ]
ファイルが見つからないんじゃなくて、mytest.soをDLLとしてロードできない何らかの理由があるんじゃないかな。
Init_mytestという関数がないとか、mytest.soが依存している他のDLLが動的リンクできないとか。

362 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 09:08:01 ]
>>361
ロードできました。ありがとうございます。
原因はずばりInit_mytestがない、でした。
SWIGで生成したmytest_wrap.cxxではInit_MyTestという関数になっていて
これをInit_mytestにリネームすることで動くようになりました。
(あと #define SWIG_Init Init_MyTestのところもリネームしました)

mytest.iの書き方がまずかったためにこのようなことになったのでしょうか。
mytest.iは以下です。

%module MyTest
%{
#include "test.h"
%}

%include "test.h"


swigへの引数は-c++ -ruby mytest.iです。

363 名前:350=362 mailto:sage [2007/12/27(木) 10:19:06 ]
とりあえず
%module MyTest
のところを
%module mytest
にすると上手くいくようです。
モジュール名は大文字で始めなければいけないという先入観がありました。


364 名前:デフォルトの名無しさん [2007/12/27(木) 22:15:16 ]
ttp://arton.no-ip.info/diary/20071227.html#p03

Ruby-1.9.0.msi
ASRやExerbはもちろん、Visualu Rubyなども入っていない素のMSVCRT(VC++6SP5)版のRuby 1.9.0になります。
以下が含まれます。サイズは15MB近くとでかいので注意。
・1.9.0 リファレンスマニュアル (chm版)
・include、lib、riなど1.9.0のnmake install対象すべて。rbconfig.rbは修正が必要かも
・Vista対応
・openssl(0.9.8g)
・readline
・zlib
・iconv(1.9.1)
・tcltk84用tcltklib.so
・この忙しいのにしっかりと入ったgoruby
再配布もご自由にどうぞ。
なお、アンインストールには信じられないくらいの時間がかかります。

365 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:23:10 ]
ゴルビーってなんやねん



366 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 04:49:31 ]
俺は全然まとはずれな、答えしてたのね orz

DLLの中美香

367 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:40:29 ]
artonさんとこのインスコして
うきうきわくわく

ruby -e "t=Time.now; 100000.times{}; puts Time.now - t"

ってやったら
1.8の方が速かった

しょぼーん(´・ω・`)






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<175KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef