Calling double rb_genrand_real(void); failing

hi,

there is a function prototype:

double rb_genrand_real(void);

in intern.h which is included by ruby.h

i’d like to call this function from C
directly rather that calling the rand
method in order avoid unnecessary overhead.
i’m not really sure why i am getting this
at run time though:

dyld: lazy symbol binding failed: Symbol not found: _rb_genrand_real
Referenced from:
/Library/Ruby/Gems/1.8/gems/drp-0.9.0/lib/drp_main_ext.bundle
Expected in: dynamic lookup

dyld: Symbol not found: _rb_genrand_real
Referenced from:
/Library/Ruby/Gems/1.8/gems/drp-0.9.0/lib/drp_main_ext.bundle
Expected in: dynamic lookup

shouldn’t all functions included through
ruby.h be available?

thanks,
_c

Christophe M. wrote:

method in order avoid unnecessary overhead.
/Library/Ruby/Gems/1.8/gems/drp-0.9.0/lib/drp_main_ext.bundle
Expected in: dynamic lookup

shouldn’t all functions included through
ruby.h be available?

thanks,
_c

You don’t say which version of Ruby you’re using, but in my 1.8.6 patch
111 source code there is no such function.

Tim H. wrote:

You don’t say which version of Ruby you’re using, but in my 1.8.6 patch
111 source code there is no such function.

Ah, I see it defined in 1.9.0. Are you sure you’re linking with the 1.9
library?

Tim H. wrote:

Tim H. wrote:

You don’t say which version of Ruby you’re using, but in my 1.8.6 patch
111 source code there is no such function.

Ah, I see it defined in 1.9.0. Are you sure you’re linking with the 1.9
library?

doh, thanks for that. i was mistakenly browsing 1.8.7 sources,
which also include the prototype, and linking against 1.8.6

regards,
_c