繁体   English   中英

未捕获的类型错误: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 的步骤。

  1. $ 源 emsdk_env.sh
  2. $./emsdk 激活最新
  3. cd openh264-js-master
  4. 制作

注意: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM