此代码不正确,但它告诉我要做的事情
char* p = EM_ASM(
var a = new ArrayBuffer(8);
return a;
);
获取javascript arrayBuffer的C指针的正确方法是什么? 我只想读取arrayBuffer而不是写
答案 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]);