From: Tim Pease Date: 2010-06-05T00:19:35+09:00 Subject: Re: Use a core C function not included in intern.h On Jun 3, 2010, at 6:48 PM, Shinku Fag wrote: > Hello. > > I trying to make a function with C extension for 1.8.7 that should use > functions defined in Ruby such as >> VALUE eval(VALUE,VALUE,VALUE,const char*,int) > But functions that aren't reflected (sorry, I don't know how to call it > better r_r) in intern.h, seems to be unusable. If I just add string >> VALUE eval _((VALUE,VALUE,VALUE,const char*,int)); > to extension source or intern.h then I get >> symbol lookup error: /usr/lib/ruby/gems/1.8/gems/rmtools-1.0.0/lib/rmtools.so: undefined symbol: eval > > So, is there a way to use such functions in the extension without > copypasting half the eval.c (and maybe even something else) into it? > The "eval" method in the eval.c source file is marked as static. It cannot be called from outside the eval.c source file. This is a feature of the compiler/linker, and to the best of my knowledge there is no easy way around it. If someone with more recent C experience could chime in, it would be appreciated. My C is a little rusty, and would love for someone to double check my facts. Blessings, TwP