Subject: [ruby-ffi] My first example failed, can anyone help me? |
From: win kiwi |
Date: 5/3/12 3:43 AM |
To: ruby-ffi |
I write a c header file: hello.h ------------------------------- extern void hello(); ------------------------------- souce file: hello.cpp ------------------------------ #include "hello.h" #include <stdio.h> void hello() { printf("hello"); } ------------------------------ I use this command to generate .so in ubuntu: g++ -O -fpic -shared -o hello.so hello.cpp Now, the hello.so is under my directory. I write a ruby file: helloLib.rb: ----------------------------- require 'ffi' module HelloLib extend FFI::Library ffi_lib File.dirname(__FILE__) + "/hello.so" attach_function :hello, [], :void end ---------------------------- then, I write codes to call this wrapper hellotest.rb ------------------------------- require 'rubygems' require 'ffi' require 'helloLib' HelloLib.hello() ------------------------------- I type : ruby ./hellotest.rb at the console . get following error information: /var/lib/gems/1.8/gems/ffi-1.0.11/lib/ffi/library.rb:249:in `attach_function': Function 'hello' not found in [./hello.so] (FFI::NotFoundError) from ./helloLib.rb:5 from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' from ./hellotest.rb:3 Can any one give me suggestion? Thank you.