如何表示emscripten/webassembly调用返回的void



我有一个导出到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;
}

相关内容

  • 没有找到相关文章

最新更新