Я пытаюсь создать оболочку Ruby для динамической * .so библиотеки, которая занимается обработкой изображений. Одна из функций convert_x_to_z
имеет пользовательский входной параметр typedef. Как я могу передать в векторе A
объектов, если я нанес на карту A
-структуруКак обернуть std :: вектор настраиваемой структуры с помощью ffi?
typedef struct image {
uint16_t image_width;
uint16_t image_height;
uint16_t image_depth;
uint8_t* data;
} A;
в FFI:Structure
как это
class A < FFI::Struct
layout :image_width , :int,
:image_height, :int,
:image_depth, :int,
:data, :pointer
end
Пусть у меня есть переменная single
который является экземпляром класса А. Как могу ли я обернуть это в массив класса B, который будет представлять вектор/массив классов A
и передать его как параметр const B &x
функции int32_t convert_x_to_z
?
int32_t convert_x_to_z(
const B &x,
uint32_t &t,
uint8_t* z);
Это B
вектор или массив структура из A
класса.
typedef std::vector<A> B;
Спасибо. У меня нет доступа к коду C++, это скомпилированная динамическая библиотека, к которой у меня нет исходных файлов. Так что это не будет работать. Мне нужно сделать это на уровне Ruby. – adamliesko
@adamliesko, Просто создайте свою собственную библиотеку поверх старой. – vershov
Спасибо за это. Не могли бы вы указать мне какой-то путеводитель/учебник, как я мог это сделать? Разве это не http://stackoverflow.com/a/915181/1212336 и препятствие здесь (если у меня нет исходных файлов)? – adamliesko