webassembly.instantiate与模块

菲利普·欧辛格

我有一个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());

我是初学者。

布姆西克·金(Bumsik Kim)

简短答案:您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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

什么是WebAssembly(Wasm)模块?

Webassembly有多个模块?

WebCryptoAPI与WebAssembly加密模块

在模块实例之间共享WebAssembly.Memory

Webassembly.instantiate 期间如何定义最大内存?

如何在JavaScript中直接实例化WebAssembly模块

从WebAssembly .wasm模块获取JavaScript导入对象条目

如何从WebAssembly模块检测浏览器信息?

主机可以选择传递给每个 webassembly 模块的系统调用

LinkError:WebAssembly.instantiate() 函数导入需要一个可调用的

为使用“MODULARIZE=1”导出的 Emscripten WebAssembly 模块中的 extern 函数提供 JS 函数?

为什么不能准确计算WebAssembly二进制模块中的“截面尺寸”?

使用Cargo构建WebAssembly模块时出现“错误加载目标规范”

如何在用Rust编写的WebAssembly模块中保持内部状态?

LinkError:WebAssembly.instantiate():导入#1 module =“ go” function =“ runtime.resetMemoryDataView”错误:函数导入需要可调用

有没有一种合理的方法可以在emscripten的多模块构建中创建Webassembly“静态库”

如何将WebAssembly.Memory对象传递给从胶水.js文件实例化的WASM模块?

TypeScript:此表达式不可调用。“ ExportValue”类型的组成部分不可调用。WebAssembly模块

WebAssembly中.NET的CLR

使用节点调试WebAssembly

WebAssembly emsdk 安装失败

写入WebAssembly中的文件

WebAssembly:复制堆栈的顶部

WebAssembly可以返回什么?

WebAssembly使用什么引擎?

Blazor WebAssembly 发布失败

Webassembly中的内存限制

CompileError:WebAssembly.compile()

无法调试Blazor Webassembly