“断言失败:您需要等待运行时准备好”在JavaScript中调用C函数时出错

前端之家收集整理的这篇文章主要介绍了“断言失败:您需要等待运行时准备好”在JavaScript中调用C函数时出错前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试一个简单的例子,用 JavaScript调用编译为.wasm的C函数.

这是counter.c文件

#include <emscripten.h>

int counter = 100;

EMSCRIPTEN_KEEPALIVE
int count() {  
    counter += 1;
    return counter;
}

我使用emcc counter.c -s WASM = 1 -o counter.js编译它.

我的main.js JavaScript文件

const count = Module.cwrap('count ','number');
console.log(count());

我的index.html文件只加载正文中的两个.js文件,没有别的:

<script type="text/javascript" src="counter.js"></script>
<script type="text/javascript" src="main.js"></script>

我得到的错误是:

uncaught abort(“断言失败:你需要等待运行时准备就绪(例如等待调用main())”)

当我尝试在main.js中调用count()时我怎么能等待运行时准备好?

解决方法

我找到了一个快速解决方案我需要将main.js修改为:
Module['onRuntimeInitialized'] = onRuntimeInitialized;
const count = Module.cwrap('count ','number');

function onRuntimeInitialized() {
    console.log(count());
}

这会改变由emscripten生成的counter.js脚本中定义的Module对象.

猜你在找的JavaScript相关文章