Я пытаюсь скомпилировать расширение C++ для Ruby, и компиляция не возвращает ошибку, но, похоже, она не компилируется правильно. Что я делаю не так?Компиляция Ruby C++ Extension
У меня есть главной 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
Затем, я ве Рубин сценарий test.rb:
#!/usr/bin/env ruby
require "path_to_this_directory/foo"
и я бегу test.rb
. Он возвращает ошибку:
... in `require': .../foo.so: undefined symbol: cFoo - .../foo.so (LoadError)
Что я делаю неправильно?
Environment
- ОС: Ubuntu Linux 11,10
- Ruby: 1.9.3