【发布时间】:2014-07-26 07:36:14
【问题描述】:
我已将我的程序编译为单个 program.js 文件,并在 worker 中调用:
importScripts('program.js');
Module.callMain();
但是,虽然 callMain 正在执行,但在该函数调用的堆栈中,我收到了 Undefined is not a function 错误。
我的预感是我还没有阅读一些重要的 emscripten 文档、wiki 或源代码。
我知道的:
- emscripten 具有与工作线程一起工作的绑定,但仅当主线程上有一个 emscripted 进程使用这些绑定时(请参阅emscripten.h)
- 为了将任务(在主线程上运行的库中)编译到工作线程,
emcc需要在编译时为该任务传递特殊选项(请参阅 settings.js)
我的猜测:
- 可能需要传递一些标志,让 emcc 知道不要在不存在的对象上调用函数,例如
window - 查看了
/dev/tty的实现,它与/dev/stdin链接,以及/dev/stdout的实现,我相信可能会输出到console,我认为不支持在工人中
我在问什么:
- 如何在 worker 中使用我的库(单个 js 文件)?
- 我的库会从
program.data文件中加载其他文件,如果有影响的话
- 我的库会从
提前致谢。如果我可以添加任何详细信息,请告诉我。
注意:顶部的代码已简化 - 似乎不是语法错误。
更新:
- stacktrace (
Error.stack) 只告诉我错误发生在Module.callMain。它没有告诉我有关可能导致它的导入脚本的任何信息。 :(
【问题讨论】:
标签: javascript web-worker emscripten