You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Emscripten_set_main_loop失效:usleep未定义且出现除零错误

问题解决方法

核心问题分析

你自定义的emscripten_set_main_loop宏完全不符合Emscripten的规范,直接导致两个致命错误:

  • 传入fps=0时触发1000000/0的除零异常
  • Web浏览器环境不支持POSIX系统的usleep函数,因此报未定义错误

具体修复步骤

  • 立刻删除你自己写的这个宏定义:
    #define emscripten_set_main_loop(func,fps,simulateInfiniteLoop) 
    while (1) { func(); usleep(1000000/fps); }
    
  • 使用Emscripten SDK内置的官方emscripten_set_main_loop函数,它会自动适配浏览器事件循环,无需手动写死循环或sleep逻辑:
    // 示例:以60fps运行主循环,启用无限循环模拟
    emscripten_set_main_loop(loop, 60, 1);
    
  • 若要适配浏览器刷新率,直接将fps参数设为0即可,Emscripten会自动对齐requestAnimationFrame的频率,不会出现除零问题:
    emscripten_set_main_loop(loop, 0, 1);
    
  • 如果一定要手动实现循环逻辑,不要用usleep,改用Emscripten提供的emscripten_sleep函数,或者基于requestAnimationFrame编写异步循环(更推荐用官方主循环API,省心且兼容性更好)

内容的提问来源于stack exchange,提问作者Adib0y360

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:00:49