我的emscripten编译的程序崩溃,出现以下错误消息。使用g ++或clang编译时,相同的代码本机运行良好。通过插入printf statemens我确定崩溃发生在函数WebM::initialize()
的最后一行(从main()
调用)和函数main()
中的下一行
trap!
trap!
/opus_web_audio/build/src/encoder.js:79
throw ex;
^
abort() at Error
at jsStackTrace (/opus_web_audio/build/src/encoder.js:1138:13)
at stackTrace (/opus_web_audio/build/src/encoder.js:1155:22)
at abort (/opus_web_audio/build/src/encoder.js:164948:25)
at _llvm_trap (/opus_web_audio/build/src/encoder.js:7136:7)
at Array.__ZN4WebM10initializeEv [WebM::initialize()] [as 380] (/opus_web_audio/build/src/encoder.js:8133:3)
at Object.dynCall_ii (/opus_web_audio/build/src/encoder.js:162153:43)
at invoke_ii (/opus_web_audio/build/src/encoder.js:7282:32)
at _main (/opus_web_audio/build/src/encoder.js:7784:5)
at Object.asm._main (/opus_web_audio/build/src/encoder.js:162997:21)
at Object.callMain (/opus_web_audio/build/src/encoder.js:164825:30)
答案 0 :(得分:1)
错误的原因是WebM::initialize()
函数可以在不调用return语句的情况下退出。编译器警告这一点,但我认为它是无害的并且最初忽略它。
/opus_web_audio/src/main.cpp:178:3: warning: control may reach end of non-void function [-Wreturn-type]