我在背后捅一刀 2024-04-02 16:57 采纳率: 0%
浏览 15

Rust编译后先出现cmd后出现GUI,如何去除cmd窗口

程序使用RUST加slint实现,但是使用cargo build --release生成的exe在运行时,会先出现一个cmd窗口,然后再弹出gui界面,请问各位配置什么选项可以消除这个cmd的窗口,直接开始gui

  • 写回答

2条回答 默认 最新

  • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-02 16:57
    关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    要在Rust中生成没有cmd窗口的GUI程序,你可以按照以下步骤进行配置:

    1. 添加windows属性到Cargo.toml文件中:

      [package]
      # ...
      [package.metadata.windows]
      subsystem = "windows"
      
    2. 修改main.rs文件,将main函数的返回类型修改为Result<(), Box<dyn Error>>:

      use std::error::Error;
      
      fn main() -> Result<(), Box<dyn Error>> {
          // ...
          Ok(())
      }
      
    3. 当使用cargo build --release命令构建程序时,使用winres库来设置Windows特定的资源文件。首先,将以下内容添加到Cargo.toml文件中的[build-dependencies]部分:

      [build-dependencies]
      winres = "0.1"
      
    4. 创建一个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"替换为你自己的产品名称和程序名称。

    5. 执行cargo build --release命令来构建程序,在生成的可执行文件所在的目录中,你将找到一个resource.rc文件。

    6. 打开命令提示符或PowerShell窗口,导航到生成的可执行文件所在的目录,并运行以下命令来编译资源文件:

      windres resource.rc -O coff -o resource.res
      
    7. Run it! 要运行程序,只需双击可执行文件即可,你将不再看到cmd窗口,而只会看到GUI界面。

    注意: 确保在执行cargo build --release命令之前,你已经安装了winres库运行所需的工具链,可以通过运行以下命令来安装:

    cargo install winres
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月2日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么