3

我正在使用 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)

我已经在 J​​S 端模拟它并调用 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 故障而失败或未定义。

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

4

0 回答 0