我正在使用emscripten生成一些Javascript,我试图弄清楚如何获得返回类型数组的函数.我试图返回的数组是静态长度,但我有点困惑如何在JS域中处理基于指针的返回类型.
这种包装器是做事的方式: 如何从javascript访问Emscripten类型的数组?
非常感谢.
emscripten通过为堆使用一个大的ArrayBuffer来工作(假设已启用类型化数组,默认情况下它们是这样).
模块emscripten compiles包含此单个ArrayBuffer(Module.HEAP)和堆的许多类型化ArrayBufferViews(Module.HEAPU8,Module.HEAPU32等)的属性.
如果你收到一个指向连续数组开头的指针,你可以通过这样做获取它所代表的数据的新视图(注意,我正在使用HEAP8,假设这可能是一个字符数组):
var array = Module.HEAP8.subarray(ptr, ptr+number_of_elements);
Run Code Online (Sandbox Code Playgroud)
另外值得注意的是,每个类型化视图都接受基于元素的参数,而指针emscripten返回将表示到堆中的字节偏移量.所以同样的例子就是说,一个包含13个整数的数组可能是:
var array = Module.HEAP32.subarray((ptr>>2), (ptr>>2)+13);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2036 次 |
| 最近记录: |