问题描述
我目前正在学习WASM,并且一直关注Google's tutorial,它告诉我使用以下命令:
-s WASM=1 -s ONLY_MY_CODE=1 -s EXPORTED_FUNCTIONS="['_board_init','_board_ref','_board_step']" \
-o output.js *.c
emcc: error: Attempt to set a non-existent setting: 'ONLY_MY_CODE'
- perhaps a typo in emcc's -s X=Y notation?
- (see src/settings.js for valid values)
版本: emcc:2.0.1
操作系统: Mac OS
实际上,以上是我遇到的第一个问题,可能导致了另一个问题。我运行不带选项-s ONLY_MY_CODE
的命令,然后在js文件中加载并实例化.wasm。运行网页后,我从控制台收到另一条错误消息:
Uncaught (in promise) LinkError: WebAssembly.instantiate(): Import #0 module="env" function="emscripten_resize_heap" error: function import requires a callable
希望有WASM经验的人都能给我一些见识。
谢谢您的时间。
解决方法
在 emcc v1.38.47 之后,不再支持 ONLY_MY_CODE 选项。 改用 STANDALONE_WASM。
我想下面的代码应该适合你;
-s WASM=1 -s STANDALONE_WASM -s EXPORTED_FUNCTIONS="'_board_init','_board_ref','_board_step']" -o output.js *.c