32nd Diary

トップ | 最新 | 過去の日記 | もっと過去の日記

2004年
8月
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
めーるあどれす
ruby -rbase64 -e'puts Base64.decode64 %q(dGFrYW5vMzJAZ21haWwuY29t)'



2004-08-19 (Thursday) [長年日記]

深夜27:00くらいからバドミントンを放送していた.(オリンピック)重量age@Google

ううーむ,ついつい見てしまい,寝たのが朝方になってしまった...orz

それはそうと,解説が言ってた「決勝では冷房を止めていますから,シャトルが流れることもないでしょう.」という一言に爆笑.

あの競技,真夏の体育館でも風が入り込まないように窓を閉め切って,光がささないようにカーテンを閉めて行うんですよね...今考えると,かなり面白い状況なんですが.(ぶ

[Ruby] 拡張モジュール + exerb

拡張モジュールとexerbを組み合わせて使ってみた.

拡張モジュールはRubyからC/C++によって書かれた機能を呼び出すための機構.

Linuxでは*.soで実現し,Windowsでは*.dllによって実現する.

具体的にはRubyExtensionProgrammingGuideがとても役に立ちます.このページを参考にすれば*.rbに記述したクラスから*.dllに記述したクラスを使い,さらにそこから*.rbのメソッドを呼んだりすることもできます.

ちなみに,VisualC++のコンパイラを使うときはruby extconf.rbの段階でrubyがmswin32版じゃないとnmakeできんから要注意っす.結構はまりました.

なお,extconf.rbを作らなくても,C++ BuilderでRubyの拡張モジュールを作るにあるとおり,Init_hoge関数を外部にエクスポートしてあげるように*.defファイルを作ってあげればVisualC++のDLLプロジェクトなどで作成したやつでも使えます.

デバッグ作業のしやすさなどを考慮するならVisualC++のプロジェクトで作業した方がよいかもしれません.

一方,exerbは*.rbファイルを*.exeにしてしまえ.という機構.→Exerb Project

使用方法はexerb.rb を使ってみるが参考になります.

両方を組み合わせて使ってみたところ,複数の*.rbや*.dllを組み合わせて動作するスクリプトがひとつの*.exeにまとめられるようだった.

つまり,できあがったひとつの*.exeだけを配布すれば大丈夫そうだ.(ただし,*.exeのサイズはかなり大きいものとなってしまいますけどね.)

思っていたよりもexerbの完成度が高くて驚きだ.

本日のPingbacks(全0件)