使用Koffi 2.4.2在Node.js中向C++库传递嵌套结构体数组参数的问题求助
Koffi 2.4.2在Node.js中向C++库传递嵌套结构体数组参数的问题求助
我在Node.js应用中使用Koffi 2.4.2,之前用着都很顺手,但现在碰到了一个难题:需要给C++原生库的方法传递一个嵌套结构体数组参数,怎么都搞不定。
先贴一下我的C++库定义:mylib.h
typedef int token; typedef struct token_data { token id; float logit; float p; } token_data; typedef struct token_data_array { token_data * data; size_t size; bool sorted; } token_data_array;
mylib.cpp
void sample(token_data_array * tokens)
我的Node.js/TypeScript代码目前是这么写的:
export const TokenDataArrayType = koffi.struct('token_data_array', { data: koffi.array(koffi.struct({ id: 'int32', logit: 'float32', p: 'float32' }), 32000, 'Array'), size: 'int32', sorted: 'bool' }); const myLib = koffi.load(libLocation); const sample = myLib.func('sample', 'uint32', [TokenDataArrayType]) sample(/* 对象在其他地方构建 */)
我试过各种组合,比如把函数参数改成koffi.inout(koffi.pointer(TokenDataArrayType, 1)),去掉koffi.array修饰嵌套的data属性,还有其他能想到的方法,但都不管用——要么Koffi库直接报错,要么应用直接崩溃连日志都没有。
有没有用过Koffi库的大佬能给点指导啊?
备注:内容来源于stack exchange,提问作者G-Host




