You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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

火山引擎 最新活动