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には、Cポインターの代わりに使用できるPointerクラスがあります。したがって、次のようなことができます。

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

次に、ポインターから結果を抽出する(つまり、間接参照する)には、Rubyの配列アクセス構文を使用します。

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