我花了两天时间,通过emscripten将我的C++项目通过emscripten编译到WASM,但没有成功。
它编译得很好。我使用了options -s USE_PTHREADS=1 -s PTHREAD_POOL_SIZE=4。
但是当我通过"emrun index.html“执行我的index.html时--它甚至达不到主函数,并且被卡在p线程池预分配上:p线程发送了一个错误!未定义:未定义:未定义
很明显,如果我不指定线程池,它就会启动我的主函数,但是当我到达代码中创建p线程时,它会抛出相同的错误。
不幸的是,我没有在谷歌找到任何与这个问题相关的答案。我在我的浏览器:https://alex-wasm.appspot.com/threads/index.html中运行了这个程序,它报告说浏览器完全支持WebAssembly中的线程。
今天,我发现了WASM项目的例子,它被使用了p线程,但令人惊讶的是,当我用emrun启动它时,我在控制台中得到了完全相同的线程错误。
之后,我尝试在没有emrun的情况下运行它,得到了不同的错误:
Uncaught :未能在'file:///D:/engine/src/main/Emscripten/wengine.worker.js‘构造'Worker':脚本,无法从原始'null’访问脚本。在Object.allocateUnusedWorker Object.allocateUnusedWorker at Object.initMainThreadBlock ..。
当我在没有emrun的情况下运行时,我在我的项目和示例项目中都会出现相同的错误。
我需要emrun访问我的文件,而无需在服务器上部署项目(用于快速调试)。
所以,请你给我以下两个问题的提示:
发布于 2022-09-02 10:04:09
SharedArrayBuffer将其设置在交叉原产地打开器策略(COOP)和跨源嵌入策略(COEP)标题之后。除非正确设置了这些头文件,否则在已部署的环境中,线程代码将无法工作。有关更多信息,请单击这。https://stackoverflow.com/questions/66043510
复制相似问题