emscripten在C中读取javascript arrayBuffer

时间:2016-09-13 02:03:12

标签: javascript c emscripten

此代码不正确,但它告诉我要做的事情

char* p = EM_ASM(
    var a = new ArrayBuffer(8);
    return a;
);

获取javascript arrayBuffer的C指针的正确方法是什么? 我只想读取arrayBuffer而不是写

1 个答案:

答案 0 :(得分:1)

据我所知,没有直接从某些内联JavaScript返回数组的方法(尽管有一种方法可以从JavaScript包装的C函数返回只读数组,请参阅{{ 3}})。您可以做的是C函数中数组的malloc空间,将地址传递给内联Emscripten,并使用Emscripten JavaScript函数writeArrayToMemory将JavaScript数组复制到malloc内存中。像这样......

char *a = malloc(4);

EM_ASM_INT({
    var v1 = new Uint8Array([2,4,6,8]);

    writeArrayToMemory(v1, $0)
    }, a);

printf("the array is [%d, %d, %d, %d]\n", a[0], a[1], a[2], a[3]);