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)
私は間違っていますか?
環境
- OS:Ubuntu Linuxの11.10
- ルビー:1.9.3