I’m trying out the following example from
the book “Making use of Ruby” (page 200,201):
#----- tst_simple.rb ------------
require ‘simple’
s = Simple.new(123)
p s.i
p s.a
s.i = 456
s.a.push("Hello")
s.a.push("World")
p s.a
···
#-----------------------------
where the class Simple is defined using the C extension shown below.
I compiled it using VC++ 6.0 on Win XP Pro and got no warning or errors.
Then I copied the resulting “simple.dll” in C:\ruby\lib\ruby\site_ruby.
But when I ran the ruby code I get:
C:/ruby/lib/ruby/site_ruby/simple.dll: 126: The specified module could not
be found. - C:/ruby/lib/ruby/site_ruby/simple.dll (LoadError)
from C:/atest/tst_simple.rb:1
What am I missing ?
//---------------------------------------------------------------------
#include <ruby.h>
static VALUE simple_initialize(VALUE self, int iValue)
{
rb_iv_set(self,"@i",iValue);
rb_iv_set(self,"@a",rb_ary_new());
return self;
}
static VALUE simple_get_i(VALUE self)
{
return rb_iv_get(self,"@i");
}
static VALUE simple_set_i(VALUE self, int iValue)
{
return rb_iv_set(self,"@i",iValue);
}
static VALUE simple_get_a(VALUE self)
{
return rb_iv_get(self,"@a");
}
void Init_Simple()
{
VALUE cSimple;
cSimple = rb_define_class(“Simple”,rb_cObject);
rb_define_method(cSimple,“initialize”,simple_initialize,1);
rb_define_method(cSimple,“i”, simple_get_i, 0);
rb_define_method(cSimple,“i=”, simple_set_i, 1);
rb_define_method(cSimple,“a”, simple_get_a, 0);
}
//---------------------------------------------------------------------
Please help. Thanks,
– shanko