私は次のCコードを持っています:
typedef void (*mycallback) (char buf[128]);
void take_callback(mycallback cb)
{
}
同等のRubyFFI宣言を次のように記述しました(FFI wikiの構造体に関するアドバイスに従います)。
callback :mycallback, [[:char, 128]], :void
attach_function :take_callback, [:mycallback], :void
実行すると、次のエラーが発生します。
`find_type': unable to resolve type '[:char, 128]' (TypeError)
コールバックでchar配列を正しく宣言していないようです。:pointer
配列がCの関数の引数で機能する方法から、私はの代わりに使用する必要があると思います[:char, 128]
。しかし、FFIの特性についてはよくわかりません。ここで本当に正しい構文は何ですか?