我有一个导出到web组件的函数,就像这个
void* EMSCRIPTEN_KEEPALIVE InitializeLibrary(){
SomeStruct s;
s.k = 18;
s.t = 21;
return (void*)&s;
}
并且函数将从上面返回的关于成功调用的结构/指针用作SDK/neneneba API。对于相同的样本,Il只需创建一个类似的简单函数
int EMSCRIPTEN_KEEPALIVE Add(void* b){
SomeStruct* bg = (SomeStruct*)b;
return bg->k + bg->t;
}
问题是,使用Module.ccall或cwrap,如何指定函数返回和/或函数参数为void*?
提前谢谢。
编辑后,也许这不仅仅是一个void*,而是返回一个结构指针,并将其作为参数传递回函数。
JavaScript类型的C指针是数字。
var arg = Module.ccall('InitializeLibrary', 'number',[]);
var result = Module.ccall('Add', 'number', ['number'], [arg]);
console.log({arg, result});
并且返回指向局部变量的指针是无效的。
void* EMSCRIPTEN_KEEPALIVE InitializeLibrary(){
SomeStruct* s = malloc(sizeof(SomeStruct));
s->k = 18;
s->t = 21;
return (void*)s;
}