如何检测 Emscripten 生成的 .js 何时完成加载 wasm,以便我可以运行调用它的 JS 函数?

2024-01-29

我正在使用 Emscripten 将一些 C 代码编译为 WebAssembly。这是我的 Makefile 中的最后一个 emcc 调用:

emcc $(CFLAGS) iva.a -o iva.js

它按预期工作并生成一个 .js 文件和一个 .wasm 文件。 JS 加载到我的 HTML 页面中,如下所示:

<script src="../dist/iva.js">

它加载并实例化 WebAssembly 代码iva.wasm适当地。加载页面后不久,此消息就会出现在控制台中:

Fetch finished loading: GET "http://localhost:6931/dist/iva.wasm".

我认为这意味着我的 WebAssembly 是通过 fetch() 加载的,也许在等待一些处理时,我可以通过控制台访问我的函数:

Module._init_display_system()

并获取返回值。这是正确的并且一切正常。

显然,我也应该能够通过脚本来做到这一点。但是,我看不到只运行函数的方法after我的 WebAssembly 已实例化。我感觉我错过了一些相当明显的东西。

无论如何,我该怎么做?


Use Module['onRuntimeInitialized'].

Module['onRuntimeInitialized'] = function() {
       console.log("wasm loaded ");
       var x=Module.ccall("doubleIt","number",["number"],[20]);
       alert(x);
    }

你用过emsdk,还有像Wasmfiddle这样的在线WASM编译器。寻找我的 github 仓库 https://github.com/sudhakar3697/WebAssembly-Sample对于这两种方法都有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测 Emscripten 生成的 .js 何时完成加载 wasm,以便我可以运行调用它的 JS 函数? 的相关文章

随机推荐