尝试在`emcc -s ONLY_MY_CODE`

问题描述

我目前正在学习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