我目前正在尝试使用 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/