一个很简单的文件,就是programming ruby 上的例子(http://www.ruby-cn.org/book/ProgrammingRuby/ext_ruby.html),如果扩展名是cpp,则出现这样的错误:
error C2664: 'rb_define_method' : cannot convert parameter 3 from
'unsigned long (unsigned long)' to 'unsigned long (__cdecl *)(...)'
None of the functions with this name in scope match the target type
需要改成.c的文件才行。
如果非要用cpp,可以修改如下:
rb_define_method(cTest, "initialize", RUBY_METHOD_FUNC(t_init), 0);
rb_define_method(cTest, "add", RUBY_METHOD_FUNC(t_add), 1);