首页 > 解决方案 > 尝试在 `emcc -s ONLY_MY_CODE` 时设置不存在的设置

问题描述

我目前正在学习 WASM,并且一直在关注Google 的教程,它告诉我使用以下命令:

  -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 操作系统


实际上,以上是我遇到的第一个问题,可能导致另一个问题。我在没有选项的情况下运行命令-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经验的人能给我一些见解。

感谢您的时间。

标签: javascriptwebassembly

解决方案


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

推荐阅读