4. How to use
Create C library
int calc(int a, int b){
return a* b;
}
gcc -c -fPIC foo.c -o foo.o
gcc -shared -o libfoo.so foo.o
5. Call C library from Ruby
require 'ffi'
module FooLib
extend FFI::Library
ffi_lib "libfoo.so"
attach_function :calc, [:int, :int], :int
end
puts FooLib.calc(6, 7)
gem i ffi
ruby ffi.rb # => 6*7 = 42
6. Go
Go build c-shared library so it works.
package main
import "C"
//export calc
func calc(a, b int) int {
return (a + b) * 42
}
func main() {}
go build -buildmode=c-shared -o libfoo.so foo.go
# インタフェース変えてないのでそのままで動く
ruby ffi # => ((6+7)*42) = 546