From: nobuyoshi nakada Date: 2005-12-27T12:50:36+09:00 Subject: Re: global rb_funcall Hi, At Tue, 27 Dec 2005 07:55:32 +0900, Eero Saynatkari wrote in [ruby-talk:172589]: > > i'm embedding ruby into a C++, how do i call _global_ functions from C? > > > > like > > > > rb_funcall2(??, rb_intern("test"), 0, NULL); > > > > thanks > > All of the global methods become singleton methods of > the top-level Object object, so you should be able to > refer to rb_cObject (I am unable to test). If that > does not work, see if README.EXT provides any clues. They are private instance methods of Object. $ ruby -e 'def foo;end; p Object.private_instance_methods.grep(/foo/)' ["foo"] So the receiver is not a matter, rb_funcall2(Qnil, rb_intern("test"), 0, NULL); rb_funcall2(INT2FIX(999), rb_intern("test"), 0, NULL); rb_funcall2(rb_cArray, rb_intern("test"), 0, NULL); rb_funcall2(rb_str_new(0, 0), rb_intern("test"), 0, NULL); rb_funcall2(rb_ary_new(), rb_intern("test"), 0, NULL); rb_funcall2(rb_hash_new(), rb_intern("test"), 0, NULL); rb_funcall2(rb_module_new(), rb_intern("test"), 0, NULL); all work. -- Nobu Nakada