4
我試圖編譯一個Ruby的C++的擴展,並編制不返回一個錯誤,但它似乎並沒有被正確編譯。我究竟做錯了什麼?編譯Ruby的C++擴展
我有主CPP腳本Foo.cpp中:
#include <iostream>
#include <ruby.h>
extern "C"
VALUE cFoo;
void Init_foo(){cFoo = rb_define_class("Foo", rb_cObject);}
和extconf.rb:
require "mkmf"
$libs += " -lstdc++ "
create_makefile("foo")
和這些文件的目錄中,我做了
$ ruby extconf.rb
creating Makefile
$ make
compiling foo.cpp
linking shared-object foo.so
$ ls
Makefile extconf.rb foo.cpp foo.o foo.so
然後,我公頃已經Ruby腳本test.rb:
#!/usr/bin/env ruby
require "path_to_this_directory/foo"
,我跑test.rb
。它返回一個錯誤:
... in `require': .../foo.so: undefined symbol: cFoo - .../foo.so (LoadError)
我在做什麼錯?
環境
- 操作系統:Ubuntu Linux操作系統的11.10
- 紅寶石:1.9.3