我正在尝试为处理图像处理的动态 *.so 库创建一个 Ruby 包装器。其中一个函数 convert_x_to_z
有一个自定义的 typedef 输入参数。如果我映射了 A
结构
A
对象的 vector
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
,它是 A 类的一个实例。我如何将它包装到 B 类的数组中,它将表示类 A< 的 vector/数组
并将其作为参数 const B &x
传递给函数 int32_t convert_x_to_z
?
int32_t convert_x_to_z(
const B &x,
uint32_t &t,
uint8_t* z);
这是 A
类的 B
vector 或数组结构。
typedef std::vector<A> B;
请您参考如下方法:
你需要这样做:
int32_t convert_x_to_z_aux(const A &a, uint32_t &t, uint8_t* z) {
std::vector<A> b(1, a); // create a vector with 1 element
return convert_x_to_z(b, t, z);
}