我正在尝试为处理图像处理的动态 *.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); 
} 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!