[英]Emscripten- retrieving array values set by c function with Module.cwrap
[英]Uncaught TypeError: Module.cwrap is not a function
我需要在浏览器端解码 h264 数据,因为我使用 emscripten 在 web 程序集中使用 openh264 库构建。 我已经成功构建它并尝试在 java 脚本中使用它来解码 h264 数据。 但是我在以下行中遇到一个错误,
var open_decoder = Module.cwrap('open_decoder', 'number', null);
错误是:未捕获的类型错误:Module.cwrap 不是函数
如果有人用 emscripten 构建了 openh264,请帮我找出问题。
按照我使用 emscripten 构建 openh264 的步骤。
注意:openh264的代码已经从github(ttyridal)下载,并且已经有emscripten能干的make文件。
-s EXTRA_EXPORTED_RUNTIME_METHODS=["cwrap"]
编译源代码时在命令行中包含上面的内容
emcc source.c -s EXPORTED_FUNCTIONS=['_my_add'] -s EXTRA_EXPORTED_RUNTIME_METHODS=["cwrap"]
可能您在 Emscripten 运行时初始化之前尝试使用Module
,因此Module.cwrap
未定义。
为确保运行时已准备就绪,请将您的代码放在Module.onRuntimeInitialized
,如下例所示:
<!doctype html>
<html>
<body>
<script>
var Module = {
onRuntimeInitialized: function() {
my_add = Module.cwrap('my_add', 'number', ['number', 'number'])
alert('1 + 2 = ' + my_add(1, 2));
},
};
</script>
<script async type="text/javascript" src="index.js"></script>
</body>
</html>
请参阅此 github 存储库中的完整示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.