我有一个imagePV.c文件:
unsigned char *imageGrayscale(...) {...} .
然后我做了:$ emcc -o胶.js imagePV.c ....
我在index.html中输入:
<script src="glue.js"></script> .
<script>
var imageGrayscale= Module.cwrap('imageGrayscale',...);
Module.HEAPU8.set(...);
imageGrayscale(...);
</script>
所有作品。所以我的问题是:需要实例化什么?我的意思是,需要什么:
WebAssembly.instantiateStreaming(fetch('glue.wasm'), importObject).then(obj => obj.instance.exports.exported_func());
我是初学者。
简短答案:您Module
已经WebAssembly.instantiateStreaming()
在后台使用了。
长答案:Emscripten(emcc
)不仅是编译器,而且还是整个工具链的基础结构。当您使用emcc
命令,emcc
调用clang
编译器来编译你的C代码WASM,链接需要JS代码使用在WASM使用的进口,并生成一个样板JS代码(这就是所谓的preamble.js)来实例化WASM代码Module
,这样开发者不需要编写自己的代码来编写引导代码。
查看您的glue.js
代码。您可以找到使用的行WebAssembly.instantiateStreaming()
。除非您emcc
不带-s SIDE_MODULE=1
选项使用,否则它将始终为您生成preamble.js代码。因此,通常您不需要自己使用WebAssembly
。
一些高级用户不希望使用这么大的样板文件,而是以更艰难的方式使用WASM,例如使用不带emcc的clang。然后他们需要使用WebAssembly
包括instantiateStreaming()
自己在内的东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句