node.js - 如何访问结构体数组,从 ffi 作为指针返回
问题描述
我使用 ffi(-napi) 在 DLL 中运行函数,该函数返回 C 结构上的指针。
const structEl = new StructType({
label: string;
});
const structResult = StructType({
number_of_els: ref.types.int,
els: ref.refType(structEl);
});
我期望els
成为一个结构数组。这个问题是关于结构数组作为参数的,但我找不到关于返回值的问题。
我能够访问数组的第一个元素,但似乎无法访问以下元素。
我做错什么了吗?
解决方案
我花了一点时间才弄清楚这一点,因为ref
缺少完整的 api 文档。
默认情况下,缓冲区仅分配给一个结构(因为它是一个指针),因此您需要自己重新分配一个缓冲区,以便它不仅指向第一个元素,而且在内存中更进一步。
这是使用以下reinterpret
方法完成的:
// const structType = new StructType({…});
const myStructType = ref.refType(structType);
const result = myLibraryStruct.reinterpret(n * myStructType.size); // with n being the number of elements in the array
let el = ref.get(result, i * myStructType.size, structType); // retrieves the element in the array at rank i
推荐阅读
- python - 在同一列上按数字排序,然后按字母数字排序
- json - 从 json 对象中提取一些没有键的值
- node.js - 表示没有为 ect.js 使用正确的根目录
- python - Boto3上传ServerSideEncryption
- push-notification - appcenter 推送通知名称未显示在通知中
- javascript - 点击未检测到元素的存在
- tensorflow - Tensorflow - 即使形状看起来没问题,在 feed_dict() 上也会出现形状错误
- java - Presto SocketTimeoutException
- velocity.js - 速度js汉堡菜单功能
- javascript - 未处理的拒绝(错误):给定的操作返回未定义的 React JS