javascript – 将JS ArrayBuffer或TypedArray传递给Emscripten w / o复制

我在 JavaScript中有一个非常大的ArrayBuffer(或TypedArray),我想传递给一个emscriptened函数.我想传递原始字节而不产生副本.

如果我的C/C++函数采用std :: string,如下所示:

void processBuffer(std::string const& buffer)

我可以获取数据,但是IIUC,转换为std :: string将会产生一个缓冲区的副本.

有没有办法通过原始缓冲区没有副本?
我的访问是严格只读的.

我试过了:

void processBuffer(const char* str,size_t size);

在EMSCRIPTEN_BINDINGS中设置allow_raw_pointers(),但这似乎不起作用.
我失踪了什么

解决方法

回答自己
目前来说,没有办法允许emcriptened C/C++代码访问JS分配的内存缓冲区.

话虽如此,通过Module._malloc()分配的缓冲区可以在使用C API时通过“指针”传递.

embinding将添加额外的复制到C类型.

欲了解更多信息,请参阅emcripten邮件列表中的this主题.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...