プログラミング

RubyとC言語の連携

RubyからC言語で作成したライブラリを呼び出すプログラムを作成してみました。FFIというC言語連携用のライブラリを使うとPythonと比べて簡便に記述できました。

#!/bin/bash
gcc -shared -o add.so -xc - << EOS
    int add(int x, int y) { return x + y; }
EOS
if [ ! $? -eq 0 ]; then echo "ERROR"; fi

cat << EOF > add.rb
  require 'ffi'

  module Mod
    extend FFI::Library
    ffi_lib "add.so"

    attach_function :add, [:int, :int], :int
  end
  puts "Mod.add(1,2) = #{Mod.add(1, 2)}"
EOF

ruby add.rb
rm -f add.rb

# ./add.sh
Mod.add(1,2) = 3