我在C中有一个静态的结构数组,我想在Ruby中阅读。
C数据结构如下:
typedef struct myStruct {
char *name;
int val;
} myStruct;
myStruct myData[] = {
{"First", 0},
{"Second", 1},
{"Third", 2}
};
如何使用FFI和attach_variable从Ruby读取myData数组?
我有这个红宝石代码:
module MyLib
class MyStruct < FFI:Struct
layout :name, :string,
:val, :int
end
attach_variable :myData, :myData, :pointer
def self.readDataArray
pointer = myData
??? how to use this with MyStruct to iterate through the array ???
end
end
答案 0 :(得分:1)
没有特别好的方式,我很害怕。 read_array_of_type
对结构不起作用。
你可以使用简单的指针算术来实现这个目的:
def self.readDataArray
pointer = myData
array_of_structs = 3.times.map { |idx|
MyStruct.new(pointer + idx * MyStruct.size)
}
# Do your business
end