タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

RubyとCに関するsokutou-metsuのブックマーク (4)

  • BlackCity.LABORATORY.Ruby.EXT

    このところ、まったく更新できていません。すみません、すみません。書きかけたからには、ちゃんとやります。ごめんなさい。 まずは、モジュール名 が必要になります。どんな拡張モジュールを作るのか決めたら、それに合った名前を考えます。どれだけ長くても構いませんが、後で require することを考えると、短い方がいいですよ?(笑) 次に、C のソースコード が必要になります。が、この時点ではファイル名だけで十分でしょう。中身はこれから書くのですからね。ソースファイルひとつで済むのならば、モジュール名と同じに、複数使うのならば、同じ名前にならないように命名するのが良いそうです。まあ、あくまで目安ということで。bstream というモジュール名でソースファイルが一つだけならば、bstream.c というソースファイルにするわけです。 ここまで揃ったら、extconf.rb を作りましょう。これはモジュ

  • 第2部 クラスおよびそのメンバー関数 - tuedaの日記

    C++のクラスとメンバー関数をRuby側から使えるようにする。 この辺情報がないので苦労した。同じ苦労を他人がしないように。 hello.hpp Helloクラスを作る。コンストラクタが引数を取るが特に難しい事はない。実装は省略。 class Hello { public: Hello (int n); ~Hello (); void sayHello (); int n; }; Init_XXX Init_XXX関数はこのように作製する。ライブラリ名(モジュール名)はMyLibとした。 rb_define_class でクラスを定義する rb_define_alloc_func でメモリのアロケート関数を定義する rb_define_private_method でinitialize関数を定義する rb_define_method でメンバー関数を定義する C++のnew演算子はメモリ

  • Nothing But Programming

    Ruby C Extensionの作成 for Windows RubyのC Extensionの作成方法について書いています。ただし、正当なやり方であるかどうかは分かりません。あまりWindows用に書かれていた記事がなかったので、書きました。来の(Ruby開発をしている人たちが推奨する)やり方があるのだと思いますが、とりあえずこれで動いたというところまでです。 いろいろ読んでみるとextconf.rbを作れとか、mkmfが何だとかいろいろやり方があるみたいですが、とりあえずそういうことは無視します。RubyからDLLの関数呼び出せればそれでいいっていう人向けです。そのうちextconf.rbとかも書けたら書きます。 RubyのVersionは1.9.1を利用しています。コンパイラはVisual Studio 2008です。とりあえず関数を呼んで戻り値を得るところまでをやります。そこか

  • 第4章 クラスとモジュール

    章ではクラスとモジュールの作りだすデータ構造について詳細を見ていく。 クラスとメソッドの定義 まずはCレベルでRubyのクラスを定義する方法を少しだけ見ておきたいと思う。 この章ではある意味「特殊な」ところばかりを追求するので、圧倒的多数を占 める通常ルートを先に知っておいてほしいのだ。 クラスとメソッドを定義する主要なAPIは以下の六つである。 rb_define_class() rb_define_class_under() rb_define_module() rb_define_module_under() rb_define_method() rb_define_singleton_method() 多少の派生バージョンはあるものの、拡張ライブラリはもちろん、基クラス ライブラリまでのほとんどがこれだけのAPIで定義されている。順番に紹介し ていこう。 クラスの定義 rb_d

  • 1