Rust: win10环境如何编译bevy?
bevy是一个rust语言的跨平台游戏引擎,但是在windows10环境编译时,遇到问题无数,幸尽数解决,记录于此,供遇到同类问题的朋友参考:
环境:windows 10 + bevy 0.5.0 + rustup nightly版本
一、设置crates国内镜像
crates.io官网国内访问实在太慢,可在当前用户的.cargo目录下,创建名为config的文件
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
# 这时换成自己偏好的源即可
replace-with = 'rustcc' # 中国科技大学
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index" # 清华大学
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git" # 上海交通大学
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index" # rustcc社区
[source.rustcc]
registry = "git://crates.rustcc.cn/crates.io-index"
二、安装vs2019 build tools
bevy book上明确说明windows环境需安装VS2019 build tools (注意:必须是vs2019,最新的版本反而会编不过)
MS官网要找到vs2019,得费一番周章,点完一堆链接,还要登录后,才能找到旧版本的下载地址
https://my.visualstudio.com/Downloads?q=visual%20studio%202019&wt.mc_id=o~msft~vscom~older-downloads

安装完成后,需将64位的link.exe文件所在位置,加入到path环境变量中(重要!),我机器上安装完是下面这个目录
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.20.27508\bin\Hostx64\x64\
三、linking with `link.exe` failed: exit code: xxxx 问题
如果遇到类似下面的错误:
linking with `link.exe` failed: exit code: 1189
...
...
= note: Non-UTF-8 output: LINK : fatal error LNK1189: \xb3\xac\xb9\xfd 65535 \xb6\xd4\xcf\xf3\xb5\xc4\xbf\xe2\xcf\xde\xd6\xc6\r\n
看到这种出错信息,通常颇感无助,但其实最后1行是有用的,只是由于编码问题,看不出其中的含义,有一个简单的办法,倘若机器上安装有python,直接用下面的2行代码稍做处理
content = b"fatal error LNK1189: \xb3\xac\xb9\xfd 65535 \xb6\xd4\xcf\xf3\xb5\xc4\xbf\xe2\xcf\xde\xd6\xc6\r\n"
print(content.decode("gbk"))
可以看到
fatal error LNK1189: 超过 65535 对象的库限制
再根据这个信息,到网上一通搜索,终于找到某位高人留下的只言片语:
\.
│ Cargo.toml
│
├───.cargo
│ config.toml
│
└───src
main.rs
在项目根目录下,创建1个.cargo的目录,然后里面放1个config.toml,内容为:
[target.x86_64-pc-windows-msvc]
linker = "rust-lld.exe"
rustflags = ["-Zshare-generics=off"]
先cargo clean,清空原来的target输出,再运行cargo run,可能又会遇到下面的错:
error: the option `Z` is only accepted on the nightly compiler
意思是只有nightly版本,才能使用Z开头的参数。
rustup install nightly
先运行这行命令,安装nightly版本,然后将默认版本切换到nightly
rustup default nightly
注:如果希望切换回stable版本,只需运行rustup default stable即可。
可以输入如下命令确认下版本:
rustc --version
笔者机器上,会输出:
rustc 1.59.0-nightly (0b42deacc 2021-12-09)
这些弄完后,再运行
cargo clean
cargo run
应该就可以了,如果cargo clean时,遇到“target\xxx.dll 无法删除”云云,手动干掉target目录即可。
四、关于编译慢的问题
bevy book上提到,强烈建议windows用户安装cargo-binutils
cargo install -f cargo-binutils
rustup component add llvm-tools-preview
然后项目的Cargo.toml里,
[dependencies]
bevy = { version = "0.5.0", features = ["dynamic"] }
写上dynamic,这样会大大提高编译速度。
最后贴1个官方example的运行示例:
cargo run --example z_sort_debug

Rust: win10环境如何编译bevy?的更多相关文章
- Qt最新版5.12.2在Win10环境静态编译安装和部署的完整过程(VS2017)
一.为什么要静态编译 用QtCreator编译程序时,使用的是动态编译.编译好的程序在运行时需要另外加上相应的Qt库文件,一大堆dll文件.如果想将生成的程序连同所需要的库一起完整地打包成一个可执行程 ...
- 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- 关于电脑重装win10系统导致编译环境失效(jdk)
年前换了固态,于是重装了系统发现之前装在非系统盘的jdk1.8配置过系统环境后仍然不能正常使用的问题,在犹豫一会后选择了重装jdk, 由于之前用的是win7在环境配置上是 变量值内加;即可自行分行,但 ...
- win10环境下ue4使用游戏手柄输入
忙里偷闲,趁着源码编译需要好久的时间,把这篇博客补上,来说说怎么在win10环境中,ue4使用游戏手柄输入,也就是gamepad输入. 1.我用的手柄是rapoo v10 这款手柄,连接无线USB之后 ...
- [分享]PY的Boost自动编译程序 1.1 根据环境自动编译
Python写的Boost自动编译程序 1.1 改进: 根据自己的环境筛选出已安装环境,并列出 环境提供选择. 支持X64位的自动参数编译. 可以选择编译的参数,其他版本持续改进中 自动编译自动安装到 ...
- Rust开发环境搭建
1.Rust概述 按照百度百科的说法,Rust是一门系统编程语言 ,专注于安全 ,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言.Rust在语法上和C++类似 ,但是设计者想要在保证 ...
- win10 mars xlog编译
win10 mars xlog编译 一. 环境准备 安装 cmake 以及 python2.7, 以及下载 ndk-r16b,并配置环境变量 NDK_ROOT 指向 ndk 路径. 如果是 Win ...
- Java 9 在win10环境搭建
Java SDK 下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html JA ...
- win10环境下VS2019配置NTL库
win10环境下VS2019配置NTL库 1.下载 WINNTL库文件 https://www.shoup.net/ntl/download.html 2.创建静态库 文件->新建-&g ...
- VS Code 搭建 Rust 开发环境
VS Code 搭建 Rust 开发环境 上一篇文章安装和配置好了 Rust 环境后,我们是使用的是简单的文本工具编写 Hello World 入门代码,但是为了提高我们的学习效率,下面安利大家 VS ...
随机推荐
- df -h命令卡住 怎么办
df -h命令卡住 命令行输入df -h却发现一直卡在那里,有可能是挂载出了问题. 这种问题,大概率是由于 mount 的目录被删除了,但是没有提前执行 umount 操作,因此报错! 解决方法: 1 ...
- 突破Excel百万数据导出瓶颈:全链路优化实战指南
在日常工作中,Excel数据导出是一个常见的需求. 然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈. 当用户点击"导出"按钮时,后台系统往往会陷入三重困境: 内 ...
- 鸿蒙开发中console.log和hilog的区别
在日常开发中打印日志是调试程序非常常用的操作,在鸿蒙的官方文档中介绍了hilog这种方式,有些前端转过来的友友发现console.log也可以进行日志打印.有一段时候幽蓝君也非常喜欢使用console ...
- Python 3.14 新特性盘点,更新了些什么?
Python 3.14.0 稳定版将于 2025 年 10 月正式发布,目前已进入 beta 测试阶段.这意味着在往后的几个月里,3.14 的新功能已冻结,不再合入新功能(除了修复问题和完善文档). ...
- Mysql 实现 rank 和 != 问题
我一直相信, 人是能预测未来的, 这应该是前几年看弗洛伊德, 荣格的一些心理学书, 给我的一些感受, 有个片段是关于做梦的, 一个人梦见子弹穿过他自己的头颅, 结果不久, 他就去世了. 这个片段当时给 ...
- arcgis创建sqlserver企业级空间数据库过程中出现的问题及解决方案
在arcgis中创建sqlserver版本的企业空间数据库过程中,出现了多种问题,现把问题的现象.原因和解决方案记录下来,以防遗忘(年纪大了). 1 用sa账号创建空间数据库提示创建失败15456 安 ...
- 必看!手把手教你玩转Dify的3大核心工具!
Dify 中的工具是指其平台内置或支持集成的功能插件,用于扩展 AI 应用的能力. 1.工具作用 扩展 LLM 的能力:工具可以赋予 LLM 连接外部世界的能力,例如联网搜索.科学计算.绘制图片等.例 ...
- odoo14本地windows安装报错汇总
odoo14安装libsass报错C++啥的解决办法:pip install wheel: pip install libsass-0.20.1-......whl 注意:whl版本应与python版 ...
- DeepSeek MOE 代码实现
前置知识: PyTorch 基础函数操作整理 1. topk 操作 功能: torch.topk 用于返回输入张量中指定维度上的前 k 个最大元素及其对应的索引. 示例代码: import torch ...
- Python 潮流周刊#106:PEP-734 正式接纳,多解释器时代来临(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 400+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...