首页 > 解决方案 > 使用优化级别 02 和 03 编译 Wasm 模块以加载到 AudioWorlet?

问题描述

我正在尝试编译一个带有额外优化的 .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 的导出

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

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

非常感谢

标签: web-audio-apiemscriptenwasm-bindgenaudio-worklet

解决方案


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


推荐阅读