dongsi2317 2018-04-05 14:26
浏览 369
已采纳

构建错误:未知字段“ HideWindow”

I'm making multi-platform Gui applications with golang and Qt. The application executes an external command.

In Windows, a DOS window is displayed when executing the external command. I gave the HideWindow attribute so as not to display this.

  command := exec.Command("hoge", "fuga")
  command.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}

this code works well in Windows, but the following error occurred in the build for MacOS.

unknown field 'HideWindow' in struct literal of type syscall.SysProcAttr

I modified the code as below, but I can not avoid the error. Are there any ideas?

 if runtime.GOOS == "windows" {
  command.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
 }
  • 写回答

1条回答 默认 最新

  • duangan9251 2018-04-05 14:28
    关注

    You cannot fix a compile-time error with a run-time check. You'll need to use build constraints to create separate implementations compatible with each platform. To stay DRY, you'll likely want to create a function that only handles the platform-specific behavior(s), so that the cross-platform code can then call into the platform-specific function (which may be a no-op on platforms that need no platform-specific behavior). So you might have a file for Windows, one for MacOS, and one for Linux (or whatever set of platforms you're supporting), each with a function like:

    // +build darwin
    
    package whatever
    
    func prepareBackgroundCommand(cmd *exec.Cmd) {
        cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
    }
    

    And another like:

    // +build !darwin
    
    package whatever
    
    func prepareBackgroundCommand(cmd *exec.Cmd) {
    }
    

    So that in your main (non-platform-specific) code, you can call prepareBackgroundCommand(command) and it will handle it correctly based on the platform it's being compiled for.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?