From: Jason Roelofs Date: 2009-01-23T04:28:02+09:00 Subject: Re: Calling class methods from C Bah, saw a small issue right when I hit "Send". My call line works for a class defined as such: class CallTest def self.go (do something here) end end If you need to call an instance method on an instance of the class CallTest, you need to of course get a hold of that instance, or make a new one: VALUE obj = rb_funcall(rb_const_get("CallTest"), rb_intern("new"), 0); rb_funcall(obj, rb_intern("go"), 0); Jason On Thu, Jan 22, 2009 at 2:19 PM, Jason Roelofs wrote: > From the top of my head: > > rb_funcall(rb_const_get("CallTest"), rb_intern("go"), 0); > > And if you're calling "global" methods, it's better to call it on > Kernel, where the methods are defined anyway: > > rb_funcall(rb_mKernel, rb_intern("method_name"), args); > > Hope that helps. > > Jason > > On Thu, Jan 22, 2009 at 2:11 PM, Robert Rouse wrote: >> Hello, >> >> I'm trying to call a class method from C. I've tried all combinations of >> rb_intern I could think of to make it work, but I've gotten nothing. >> >> Example class >> >> class CallTest >> def go >> (do something here) >> end >> >> end >> >> rb_funcall(?, rb_intern("go"), 0); >> >> What goes in the ? space? I know if I use Qnil there, it will call >> global functions, but I'd prefer class methods. >> >> Am I heading in the wrong direction? >> >> Also, I'd prefer not to have to know the class name ahead of time if >> possible, but if I have to require that I know what it is, I can try >> passing it by name to my application. >> >> I'm using SWIG to generate the binding. >> -- >> Posted via http://www.ruby-forum.com/. >> >> >