我正在使用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()
并获取返回值。这是事实,一切正常。
显然,我也应该能够通过脚本执行此操作。但是,我看不到仅在实例化WebAssembly之后才运行函数的方法。我感到自己缺少明显的东西。
无论如何,我该怎么做?
最佳答案
使用Module['onRuntimeInitialized']
。
Module['onRuntimeInitialized'] = function() {
console.log("wasm loaded ");
var x=Module.ccall("doubleIt","number",["number"],[20]);
alert(x);
}
您已经使用过emsdk,有像Wasmfiddle这样的在线WASM编译器。查找my github repo对这两种方法都有用。
关于javascript - 如何检测Emscripten生成的.js何时完成wasm的加载,以便我可以运行调用它的JS函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58255857/