使用node-ffi,ref-array和ref-struct

时间:2017-04-04 08:32:09

标签: javascript c node.js node-ffi ref-struct

我使用node-ffi将JS与C库集成。我想出了将复杂结构作为IN参数传递并将单个结构作为OUT参数传递的方法。但是,我无法从C成功获取结构数组并在JS中迭代它们。我有以下C结构和API。

typedef struct _st {
uint32_t index;
uint8_t size;
uint8_t* data;
} ST;

int getData(uint8_t len, Input* arrInputs, ST* structArray) ; // Fills structArray with dynamic # of struct objects (calloc'ed on heap)

我已在JS方面模拟它并按如下方式调用C API

var ST = StructType({
index : 'uint32',
size : 'uint8',
data : 'string'
})
var stArray = ArrayType(ST);

var Clib = ffi.Library('./CLib1', {
'getData':[ 'int', ['uint8', InputArray, stArray] ]
});
var arrData = ref.alloc(ST)
var res = Clib.getData(3, arrInputs, arrData);

我可以打印并检查值是否在C内的out参数内正确填充。但是我无法获得JS方面打印的值。它可能因Seg故障或未定义而失败。

任何建议都会有很大的帮助!

0 个答案:

没有答案