如何在MacRuby中创建C指针?

时间:2012-05-18 22:44:44

标签: c macruby scripting-bridge

我正在使用MacRuby中的C Framework,它具有结构

int CPhidget_getSerialNumber(CPhidgetHandle phid,int * serialNumber)    

您可以查看完整文档here(如果您有兴趣)。

在MacRuby中,我尝试了以下内容:

i = CPhidget_getSerialNumber(@encoder, nil)

以上给我一个号码,但不是序列号。

CPhidget_getSerialNumber(@encoder, i)

这给我一个错误说明:预期的Pointer实例,得到'0'(Fixnum)(TypeError)(这并不让我感到惊讶)。

所以我的主要问题是:MacRuby中是否存在等效的C指针?

1 个答案:

答案 0 :(得分:2)

MacRuby有一个Pointer类,可以代表C指针。所以,你可以这样做:

i = Pointer.new(:int)
CPhidget_getSerialNumber(@encoder, i)

然后,要从指针中提取结果(即取消引用它),您可以使用Ruby的数组访问语法:

i[0] #=> value from CPhidget_getSerialNumber