Compiling a Ruby extension



Hello!

I am trying to manually compile a tiny Ruby extension, but finally run
into a problem. I wonder if anyone can give me a hint on what's wrong?

The code for the extension:

#include <stdio.h>
#include "ruby.h"
__declspec(dllexport) void Init_MyExt();
static VALUE initialize(VALUE self);
static VALUE perform(VALUE self);
VALUE cMyExt;
void Init_MyExt() {
cMyExt = rb_define_class("MyExt", rb_cObject);
rb_define_method(cMyExt, "initialize", initialize, 0);
rb_define_method(cMyExt, "perform", perform, 0);
}
static VALUE initialize(VALUE self) {
return self;
}
static VALUE perform(VALUE self) {
puts("Here is the C code!");
return self;
}

My setup: Windows XP, Ruby One-Click Installer 1.8.2-15, MinGW 3.4.2.

Now I compile the code above into a DLL:

gcc -c -IC:\ruby\lib\ruby\1.8\i386-mswin32 myext.c
gcc -shared -o MyExt.dll -Wl,-s myext.o C:\ruby\lib\msvcrt-ruby18.lib

Now I try to call this DLL via the following client:

require 'MyExt'
e = MyExt.new
e.perform

Unfortunatly, this results in the following error message:

../MyExt.dll: wrong argument type Fixnum (expected Class) (TypeError)
from
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:18:in
`require'
from C:/temp/rubyext/test.rb:1

Any ideas?

.