You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下使用emscripten将Rust编译为WebAssembly报错如何解决

错误根因

你遇到的__gxx_personality_v0未定义报错,是因为Rust默认开启的panic unwind机制依赖C异常处理相关符号,而Emscripten默认编译链路没有引入C标准库,同时你使用的Rust 1.52版本和Emscripten 2.0.20版本存在配置兼容性问题。

修复方案

方案1(优先推荐)

直接关闭Rust的unwind逻辑,从根源消除对C++异常符号的依赖,同时产物体积更小。

  1. 在项目根目录创建.cargo文件夹,在文件夹内新建config.toml文件,写入如下内容:
[target.wasm32-unknown-emscripten]
rustflags = [
  "-C", "panic=abort",
  "-C", "link-arg=-sDISABLE_EXCEPTION_CATCHING=1"
]
  1. 重新执行编译命令即可:
cargo build --target wasm32-unknown-emscripten

方案2(保留panic unwind能力)

如果业务需要保留unwind能力,可直接给emcc传递链接C++标准库的参数,执行如下编译命令即可:

cargo rustc --target wasm32-unknown-emscripten -- -C link-arg=-lc++

注意事项

如果执行操作后仍报错,先确认当前终端的Emscripten环境变量是否生效:执行emcc -v能正常输出版本即为生效,否则需要重新运行emsdk目录下的emsdk_env.bat加载环境变量。

内容的提问来源于stack exchange,提问作者kochizufan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 08:36:01