1

我正在尝试编译一个带有额外优化的 .wasmmodule.js,以便在 AudioWorklet 中运行。

我使用 .post.js 文件将“导出默认模块”附加到已编译的 Wasm,使用 --post-js 编译标志。这适用于 01 优化,这是工作集设计模式示例中使用的当前编译配置。

$(EMSCR) $(CFLAGS) --post-js $(POST_JS) -o $(OUTPUT) $(SRC_EM) $(SRC) 

CFLAGS=--bind -O1\
-s WASM=1 \
-s BINARYEN_ASYNC_COMPILATION=0 \
-s SINGLE_FILE=1 \
-s ALLOW_MEMORY_GROWTH=1 \
-s ABORTING_MALLOC=0 \
-s TOTAL_MEMORY=128Mb

我遇到了优化标志 02 和 03 的编译问题,因为我需要使用默认导出加载 Wasm。

如果我评论 --post.js 导出,编译运行良好,优化级别为 02 或 03。但是,我们无法将 Wasm 加载到工作集中,但有以下例外:

例如“加载工作集时出错:SyntaxError: 请求的模块 '../../build/m.wasmmodule.js' 不提供名为 'default 的导出

我尝试了不同的组合,但我无法克服这一点。

如果我可以尝试任何不同的配置,有什么想法吗?

非常感谢

4

2 回答 2

0

我有同样的问题,我通过使用--extern-post-js而不是修复它,它在所有其他编译器工作完成--post-js附加导出,包括优化。

于 2021-07-09T15:46:26.477 回答
0

如果您使用的是 ESM JavaScript 语法import MyModule from './MyModule.js',请尝试使用这些 Emscripten 标志:

-s EXPORT_ES6=1 \
-s MODULARIZE=1 \
于 2020-04-22T23:18:20.227 回答