Commit be56e26

mo khan <mo@mokhan.ca>
2014-10-24 20:10:25
create very simple example.
1 parent 5f81e4c
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