タグ

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

タグの絞り込みを解除

rubyとcに関するlarkerのブックマーク (2)

  • Ruby FFIを使ったエクステンションの作り方 - Boost Your Programming!

    Ruby FFIについて ここ最近libclangのRuby Bindingのffi-clangに機能を追加していたのですが、その過程でFFI(Foreign function interface)というものを知りました。FFIとはようするに多言語を呼び出すためのインターフェイスのことのようで、RubyにおけるFFIはlibffiを利用しているようです。 Rubyでは(C言語で)エクステンションを書けば共有ライブラリを利用するようなライブラリ(Gem)を作ることができますが、FFIを使えばRubyで書くことができますしポータブルな実装になります。家曰く: コンパイルが必要無い マルチプラットフォーム(変更無しでJRubyやRubiniousなどで動作する) 記述がRubyなので読み書きしやすい Rubyの実装の変更に影響されない 実際FFIを使ってみると、単純なものなら一瞬でバインディン

    Ruby FFIを使ったエクステンションの作り方 - Boost Your Programming!
  • RubyによるC拡張ライブラリの作成方法

    ◆ 目的 Cで書いたコードを動的(あるいは静的)にリンクさせ、Rubyを高速に動作させる ◆ Cで置き換えるRubyのコード 下記のRubyコードをCで置き換える コード自体に深い意味はない、ただのサンプル用である class Counter def initialize @count = 0 end attr_reader :count def increment @count += 1 end end ◆ 利用例 test.rb # Cで書き直し、ビルドした共有ライブラリを取り込む require 'counter' # あとは普通のRubyコードど同じ要領で利用できる cnt = Counter.new puts cnt.count cnt.increment puts cnt.count $ ruby test.rb 0 1 ◆ Cによるクラス定義 Ruby拡張ライブラリ(共有ライ

    larker
    larker 2013/12/27
    cのsoファイルをrubyで読み込む
  • 1