3

我正在使用具有结构的 MacRuby 中的 C 框架

int CPhidget_getSerialNumber(CPhidgetHandle phid,int * serialNumber)    

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

在 MacRuby 中,我尝试了以下方法:

i = CPhidget_getSerialNumber(@encoder, nil)

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

CPhidget_getSerialNumber(@encoder, i)

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

所以我的主要问题是:MacRuby 中是否有一个 C 指针的等价物?

4

1 回答 1

2

MacRuby 有一个 Pointer 类,它可以代表 C 指针。因此,您可以执行以下操作:

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

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

i[0] #=> value from CPhidget_getSerialNumber
于 2012-05-19T00:47:05.060 回答