我需要一些建议如何将 C/C++ 结构绑定到 Ruby。我已经阅读了一些手册,并且发现了如何将类方法绑定到类,但我仍然不明白如何绑定结构字段并使它们在 Ruby 中可访问。
这是我正在使用的代码:
myclass = rb_define_class("Myclass", 0);
...
typedef struct nya
{
char const* name;
int age;
} Nya;
Nya* p;
VALUE vnya;
p = (Nya*)(ALLOC(Nya));
p->name = "Masha";
p->age = 24;
vnya = Data_Wrap_Struct(myclass, 0, free, p);
rb_eval_string("def foo( a ) p a end"); // This function should print structure object
rb_funcall(0, rb_intern("foo"), 1, vnya); // Here I call the function and pass the object into it
Ruby 函数似乎假定这a
是一个指针。它打印指针的数值而不是它的真实内容(即["Masha", 24]
)。显然,Ruby 函数无法识别这个对象——我没有设置对象的属性名称和类型。
我怎样才能做到这一点?不幸的是,我无法弄清楚。