Commit be56e26
Changed files (5)
greeting.c
@@ -1,6 +1,6 @@
#include <stdio.h>
-int greet(char *name) {
+void greet(char *name) {
printf("Hello %s\n", name);
}
greeting.h
@@ -0,0 +1,2 @@
+
+void greet(char *name);
greeting.rb
@@ -0,0 +1,9 @@
+require 'ffi'
+
+class Greeting
+ extend FFI::Library
+ ffi_lib 'greeting'
+ attach_function :greet, [:string], :int
+end
+
+Greeting.greet('mo')
libgreeting.so
Binary file
Rakefile
@@ -0,0 +1,15 @@
+task :default => :build
+
+task :clean do
+ sh 'rm *.so'
+end
+
+desc 'build libgreeting.so'
+task :build => :clean do
+ sh 'gcc -shared -o libgreeting.so -fPIC greeting.c'
+end
+
+desc 'run the example'
+task :run => :build do
+ sh 'LD_LIBRARY_PATH=. ruby greeting.rb'
+end