Ruby 용 C++ 확장을 컴파일하려고하는데 컴파일이 오류를 반환하지 않지만 제대로 컴파일되지 않는 것 같습니다. 내가 도대체 뭘 잘못하고있는 겁니까?Ruby C++ Extension 컴파일
#include <iostream>
#include <ruby.h>
extern "C"
VALUE cFoo;
void Init_foo(){cFoo = rb_define_class("Foo", rb_cObject);}
및 extconf.rb :
나는 주 CPP 스크립트를 foo.cpp에이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)
무엇이 잘못 되었나요?
환경
- OS : 우분투 리눅스 11.10
- 루비 : 1.9.3