程序使用RUST加slint实现,但是使用cargo build --release生成的exe在运行时,会先出现一个cmd窗口,然后再弹出gui界面,请问各位配置什么选项可以消除这个cmd的窗口,直接开始gui
2条回答 默认 最新
檀越@新空间 2024-04-02 16:57关注下午好🌅🌅🌅
本答案参考ChatGPT-3.5要在Rust中生成没有cmd窗口的GUI程序,你可以按照以下步骤进行配置:
-
添加
windows属性到Cargo.toml文件中:[package] # ... [package.metadata.windows] subsystem = "windows" -
修改
main.rs文件,将main函数的返回类型修改为Result<(), Box<dyn Error>>:use std::error::Error; fn main() -> Result<(), Box<dyn Error>> { // ... Ok(()) } -
当使用
cargo build --release命令构建程序时,使用winres库来设置Windows特定的资源文件。首先,将以下内容添加到Cargo.toml文件中的[build-dependencies]部分:[build-dependencies] winres = "0.1" -
创建一个
build.rs文件,并添加以下内容:use std::env; use std::path::PathBuf; use winres::WindowsResource; fn main() { let out_dir = &PathBuf::from(env::var("OUT_DIR").expect("Failed to get OUT_DIR env")); WindowsResource::new() .set_icon("path/to/your/icon.ico") // 替换为你的图标文件路径 .set("ProductName", "Your Product Name") .set("OriginalFilename", "your_program_name.exe") // 替换为你的程序名称 .compile().expect("Failed to compile windows resource"); let dest_path = out_dir.join("resource.rc"); std::fs::copy(dest_path, "resource.rc").expect("Failed to copy resource.rc"); }将
"path/to/your/icon.ico"替换为你自己的图标文件路径,并将"Your Product Name"和"your_program_name.exe"替换为你自己的产品名称和程序名称。 -
执行
cargo build --release命令来构建程序,在生成的可执行文件所在的目录中,你将找到一个resource.rc文件。 -
打开命令提示符或PowerShell窗口,导航到生成的可执行文件所在的目录,并运行以下命令来编译资源文件:
windres resource.rc -O coff -o resource.res -
Run it! 要运行程序,只需双击可执行文件即可,你将不再看到cmd窗口,而只会看到GUI界面。
注意: 确保在执行
cargo build --release命令之前,你已经安装了winres库运行所需的工具链,可以通过运行以下命令来安装:cargo install winres解决 无用评论 打赏 举报 编辑记录-