Бих искал да използвам Fiddle за достъп до нативен библиотека, компилирана от код на Rust. C представянето на структурата е много просто, то е само указател и дължина:
typedef struct {
char *data;
size_t len;
} my_thing_t;
// Example function that somehow accepts a struct
void accepts_a_struct(my_thing_t thing);
// Example function that somehow returns a struct
my_thing_t returns_a_struct(void);
Въпреки това, всички примери, които мога да намеря, приемат или връщат указатели към структури, а не самите структури. Бих искал да избегна двойната индиректност, ако изобщо е възможно.
Взех назаем пример от Fiddle::Importer
документация . Въпреки това не виждам как правилно да извикам метода extern
със структура вместо указател към структура:
require 'fiddle'
require 'fiddle/import'
module LibSum
extend Fiddle::Importer
dlload './libsum.so'
extern 'double sum(double*, int)'
extern 'double split(double)'
end
Забележка
Fiddle не е същото като FFI gem. Fiddle е компонент на стандартната библиотека Ruby и не се предоставя като отделно бижу. Тези свързани въпроси се отнасят за скъпоценния камък на FFI, а не за Fiddle:
RBasic
и подкласове) или дори друг указател от там към действителните данни в купчина. - person Eugene Petrov   schedule 28.06.2015parse_ctype
функция. - person Eugene Petrov   schedule 28.06.2015