我将尝试从ArrayBuffer创建一个WebAssembly模块。
C代码:
#include <stdio.h>
int main() {
printf("hello, world!\n");
return 0;
}
我这样编译它:
$ emcc -O2 hello.c -s WASM=1 -o hello.html
我启动一个本地的http服务器。 然后我尝试在浏览器中这样加载它:
fetch('hello.wasm')
.then(res => res.arrayBuffer())
.then(buff => WebAssembly.Module(buff));
我遇到了以下错误:
Uncaught (in promise) RangeError: WebAssembly.Module(): Wasm编译在此上下文中超出了提供的参数的内部限制 at fetch.then.then.buff (:1:77) at
我不知道如何解决这个错误,而且在网上搜索也找不到任何有用的信息。
如果能得到帮助,将不胜感激。
谢谢!
importObject
? - Andrei CACIOimportObject
将包含什么,因此对于大多数人来说,WebAssembly.instance
是正确的API。如果您真的不知道它将包含什么,则可以使用WebAssembly.compile
获取WebAssembly.Module
,然后使用WebAssembly.instantiate
。这仍然是基于Promise的,但是将编译/实例化分开,并允许您在获取模块后创建importObject
。 - JF Bastien