【发布时间】:2011-04-27 14:15:22
【问题描述】:
我正在尝试通过 SWIG (2.0.3) 为 C 库创建与 Ruby 的绑定。 比如说,我们在 C 语言中有一个函数原型,内容如下:
void do_sth_and_call_me_then( (int)(* my_callback)(GlyQuery *, GlyMemCache *))
这会做一些奇怪的事情并最终调用回调:
int my_callback(GlyQuery * a, GlyMemCache * b)
多次作为参数给出。由于这是与库交谈的常用方式,因此我也希望在 Ruby 中具有这种行为。在研究过程中,我发现了this,这正是我所需要的:
%{
void
wrap_callback(void *user_data, const char *other_data)
{
VALUE proc = (VALUE)user_data;
rb_funcall(proc, rb_intern("call"), 1, rb_str_new2(other_data));
}
%}
遗憾的是,我无法弄清楚我必须进行哪些更改才能使其适用于字符串以外的对象。
如果您需要更多信息:整个接口文件是here
有什么建议吗? 感谢您的帮助。
【问题讨论】: