MALOUDA-PSA 2024-04-19 22:24 采纳率: 90.9%
浏览 0
已结题

webassembly运行出错的问题


emcc -o m.js -std=c++11 --bind main.cpp
[root@webserver CppCallback]# node m.js 
/root/frontend/WebAssembly/LearnWebassembly20190319/code/CppCallback/m.js:508
  Module['monitorRunDependencies']?.(runDependencies);
                                   ^

SyntaxError: Unexpected token .
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-19 22:24
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试编译并运行一个使用Emscripten(emcc)编译的C++程序,并通过Node.js加载生成的JavaScript文件。错误信息表明在加载m.js时遇到了语法错误,这通常是因为生成的JavaScript代码不兼容Node.js环境。

    这个错误是由于WebAssembly模块API在某些版本的Node.js中未被正确处理。为了解决这个问题,你需要更新Node.js到最新版本,或者使用Emscripten的--shell-file选项来创建一个更稳定的入口点,以便与旧版Node.js兼容。

    首先,确保你的Node.js是最新的。你可以通过运行下面的命令检查当前版本:

    node -v
    

    如果你的Node.js不是最新的,你可以从Node.js官方网站下载并安装最新版本。

    如果你已经使用了最新版本的Node.js,但仍然遇到问题,可以尝试使用--shell-file选项。这是一个稳定的Node.js壳文件,可以解决与新特性相关的兼容性问题。在编译时添加此选项:

    emcc -o m.js -std=c++11 --bind --shell-file=node_loader.js main.cpp
    

    这里我们使用了一个名为node_loader.js的稳定壳文件。如果你没有这个文件,可以从Emscripten的GitHub仓库复制它。克隆仓库:

    git clone https://github.com/emscripten-core/emscripten.git
    

    然后将emscripten/tools/js PropertyInfo.js重命名为node_loader.js。接下来,按照上面的命令重新编译你的代码。

    完成这些步骤后,你应该可以在Node.js环境中成功运行生成的JavaScript文件。再次执行:

    node m.js
    

    这样应该能解决你遇到的语法错误。如果还有其他问题,可能需要查看Emscripten的官方文档或社区支持来获取进一步的帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月19日

悬赏问题

  • ¥50 高维数据处理方法求指导
  • ¥100 数字取证课程 关于FAT文件系统的操作
  • ¥15 如何使用js实现打印时每页设置统一的标题
  • ¥15 安装TIA PortalV15.1报错
  • ¥15 能把水桶搬到饮水机的机械设计
  • ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
  • ¥15 使用小程序wx.createWebAudioContext()开发节拍器
  • ¥15 关于#爬虫#的问题:请问HMDB代谢物爬虫的那个工具可以提供一下吗
  • ¥15 vue3+electron打包获取本地视频属性,文件夹里面有ffprobe.exe 文件还会报错这是什么原因呢?
  • ¥20 用51单片机控制急停。