如何解决如何表示void *从emscripten / webassembly调用返回
我有一个这样的功能可以导出到Web程序集
void* EMSCRIPTEN_KEEPALIVE InitializeLibrary(){
SomeStruct s;
s.k = 18;
s.t = 21;
return (void*)&s;
}
和函数在顺序调用中将上述返回的结构/指针用作SDK / 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'],[arg]);
console.log({arg,result});
返回指向本地变量的指针无效。
void* EMSCRIPTEN_KEEPALIVE InitializeLibrary(){
SomeStruct* s = malloc(sizeof(SomeStruct));
s->k = 18;
s->t = 21;
return (void*)s;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。