目前 native 后端的工作模式是这样的:
- 在默认状态下,不需要安装任何 C 工具链也能跑
- 在手动指定了
--release
,或者有 C FFI/定制 cc flag 需求的时候,会使用系统的 C 编译器,在 Windows 下就是 MSVC
你这里的情况是构建系统的一个 bug,我们会尽快修复,感谢反馈。作为 workaround,可以考虑下面两种做法:
- 先临时装个 MSVC
- 随便装一个任意的 C 编译器,然后在
main
包的moon.pkg.json
里加上:{ ... // 原来的配置 "link": { "native": { "cc": "你的C编译器" } } }
下一次 release 或者明天安装一下 nightly 版本的编译器应该问题就会修复了,然后就不改配置也可以工作了。
为什么我默认会出错, --release也是有问题,msvc都有安装
thread '<unnamed>' panicked at C:\Users\runneradmin/.cargo\git\checkouts\n2-e90a381ad9753ef2\4d42dd7\src\process_win.rs:33:10:
called `Result::unwrap()` on an `Err` value: Utf8Error { valid_up_to: 4, error_len: Some(1) }
thread 'note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
<unnamed>' panicked at C:\Users\runneradmin/.cargo\git\checkouts\n2-e90a381ad9753ef2\4d42dd7\src\process_win.rs:33:10:
called `Result::unwrap()` on an `Err` value: Utf8Error { valid_up_to: 4, error_len: Some(1) }