Ruby extension problem

Hey guys,
I am writing a ruby extension in C++ that exposes a function to ruby,
and then opens a ruby interpreter that loads a file that can call the
function.

I am following the Pragmatic Programmers guide to embedding and
extending ruby. I have a function defined like this:

static VALUE Send (VALUE length, VALUE capMode, VALUE dev, VALUE pack)

then later to register it, there is this:

VALUE cTest;

void Init_Send() {
cTest = rb_define_module(“rpacket”);
rb_define_module_function(cTest, “Send”, Send, 4);
}

However, when compiling, I get this error:

error C2664: ‘rb_define_module_function’ : cannot convert parameter 3
from ‘VALUE (__cdecl *)(VALUE,VALUE,VALUE,VALUE)’ to ‘VALUE (__cdecl *)
(…)’

Anyone know why it’s failing?

On Tue, Jan 26, 2010 at 07:10:15AM +0900, Philliam A. wrote:

Hey guys,
I am writing a ruby extension in C++ that exposes a function to ruby,
and then opens a ruby interpreter that loads a file that can call the
function.

I am following the Pragmatic Programmers guide to embedding and
extending ruby. I have a function defined like this:

static VALUE Send (VALUE length, VALUE capMode, VALUE dev, VALUE pack)

This function needs to take a leading VALUE which holds a reference to
the
recipient of the call. Try this instead:

static VALUE Send (VALUE mod, VALUE length, VALUE capMode, VALUE dev,
VALUE pack)

On Jan 25, 2:34 pm, Aaron P. [email protected]
wrote:

This function needs to take a leading VALUE which holds a reference to the
recipient of the call. Try this instead:

static VALUE Send (VALUE mod, VALUE length, VALUE capMode, VALUE dev, VALUE pack)


Aaron P.http://tenderlovemaking.com/

I still have a similar error:

1>.\main.cpp(45) : error C2664: ‘rb_define_module_function’ : cannot
convert parameter 3 from ‘VALUE (__cdecl *)
(VALUE,VALUE,VALUE,VALUE,VALUE)’ to ‘VALUE (__cdecl *)(…)’
1> None of the functions with this name in scope match the
target type

Line 45 is the

rb_define_module_function(cTest, “Send”, Send, 4);