Cas*_*yer 6 javascript c webassembly
有没有办法访问生活在WebAssembly模块中的函数指针?
例如,给定以下编译为WebAssembly的"模块":
extern void set_callback(void (*callback)(void *arg), void *arg);
static void callback(void *arg)
{
/* ... */
}
int main() {
set_callback(&callback, 0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
do_callbackJavaScript中的实现是否可以调用回调而不必依赖中间C函数导出来进行实际的函数调用?
var instance = new WebAssembly.Instance(module, {
memory: /* ... */
env: {
set_callback: function set_callback(callbackptr, argptr) {
// We only got the pointer, is there any
},
},
});
Run Code Online (Sandbox Code Playgroud)
通过中间函数导出,我的意思是我可以添加具有公共可见性的内部函数.
do_callback(void (*callback)(void *arg), void *arg)
{
callback();
}
Run Code Online (Sandbox Code Playgroud)
然后JavaScript set_callback函数可以通过委托do_callback函数调用函数指针.
function set_callback(callbackptr, argptr) {
instance.exports.do_callback(callbackptr, argptr);
}
Run Code Online (Sandbox Code Playgroud)
但是,最好是这样做而不必经过那个明确的间接,是否可能,功能表可能?
| 归档时间: |
|
| 查看次数: |
1409 次 |
| 最近记录: |