javascript - 使用node-api将数组缓冲区从C转发到JS

标签 javascript c node.js buffer n-api

我目前正在尝试使用 JS 进行一些低级编码。 因此,我使用 https://nodejs.org/api/n-api.html 将自定义 C 代码添加到我的 Node.js 运行时。

我在c中传递值并更改它们来工作,甚至读取数组缓冲区并按照我想要在C中的方式解释它们,但我只能返回有限的JS值(数字和字符串,如本部分https://nodejs.org/api/n-api.html#n_api_functions_to_convert_from_c_types_to_n_api所示)

有人知道如何获取 N-API 数组缓冲区吗?我想给我的 JS 一个我在 C 中定义的缓冲区,然后通过 Dataviews 工作。

最佳答案

我找到了答案: https://nodejs.org/api/n-api.html#n_api_napi_create_external_arraybuffer

我正在寻找与“外部”不同的关键字,但这正是我所寻找的: 您预先在 C 中定义一个缓冲区,然后创建一个使用该底层缓冲区的 NAPI/JS 数组缓冲区。 napi_create_arraybuffer 会清除缓冲区,然后也可以在 C 中对其进行操作,但你不能,例如加载文件然后使用该缓冲区。所以napi_create_external_arraybuffer是可行的方法。

编辑:当我问这个问题时,我正在写我的开源学士论文,所以这就是我最终使用它的方式:https://github.com/ixy-languages/ixy.js/blob/ce1d7130729860245527795e483b249a3d92a0b2/src/module.c#L112

关于javascript - 使用node-api将数组缓冲区从C转发到JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55166885/

相关文章:

c - 为什么程序不通过Askdisks函数?

c - 更新全局结构体的成员

node.js - 如何使用带有 typescript 和 out 文件夹的 yarn 工作区?

javascript - 使用 CSS/Javascript 创建堆栈 View 控件

javascript - 如何避免在非 IE 浏览器中使用 pushState 和 $.ajax(hash) 进行双重提交?

c - 海合会 : division by zero

Android 在连接到 Socket 时出错

javascript - SvelteKit 中服务器端渲染如何与客户端路由配合使用?

javascript - Elastic Search 查询电子邮件

javascript - 出现错误 : cannot set headers after they are sent to the client