Я следующий код C:Объявив массив символов в Ruby, FFI
typedef void (*mycallback) (char buf[128]);
void take_callback(mycallback cb)
{
}
Я написал эквивалентные объявления рубин FFI, как показано ниже (следующие рекомендации по FFI wiki структур):
callback :mycallback, [[:char, 128]], :void
attach_function :take_callback, [:mycallback], :void
Когда я запускаю его, возникает следующая ошибка:
`find_type': unable to resolve type '[:char, 128]' (TypeError)
Кажется, я не объявляю массив символов в обратный вызов правильно. Из того, как массивы работают в аргументах функции в C, я думаю, что я должен использовать :pointer
вместо [:char, 128]
. Но я не уверен в особенности FFI. Какой здесь действительно правильный синтаксис?
Я только что нашел эту страницу вики: https://github.com/ffi/ffi/wiki/Callbacks, которая подтверждает, что я должен использовать: указатель. –