如何从Golang创建一个在运行时不打开命令(cmd)窗口的可执行文件?

时间:2014-04-23 16:43:55

标签: console go

我创建了一个我想在后台无形运行的应用程序(没有命令/ cmd控制台)。我该怎么做?

(适用于Windows,在Windows 7 Pro 64位上测试)

3 个答案:

答案 0 :(得分:49)

在线发现的文档说我可以编写一些类似的内容,

go build -ldflags -Hwindowsgui filename.go

但这会产生错误:unknown flag -Hwindowsgui

对于更新的(1.1?)版本的编译器,这应该有效:

go build -ldflags -H=windowsgui filename.go

当我继续搜索时,我发现了一条说明官方文档应该很快更新的说明,但与此同时,有很多旧式的示例答案出现错误。

答案 1 :(得分:34)

使用Go Version 1.4.2

 go build -ldflags "-H windowsgui" 
  

来自Go文档:

go build [-o output] [-i] [build flags] [packages]
     传递每个5l,6l或8l链接器调用的

-ldflags 'flag list'个参数。

答案 2 :(得分:8)

如果您不希望每次在调试期间键入长构建指令但仍希望控制台窗口消失,则可以在主函数的开头添加此代码:

package main

import "github.com/gonutz/w32"

func main() {
    console := w32.GetConsoleWindow()
    if console != 0 {
        _, consoleProcID := w32.GetWindowThreadProcessId(console)
        if w32.GetCurrentProcessId() == consoleProcID {
            w32.ShowWindowAsync(console, w32.SW_HIDE)
        }
    }
}

现在您可以使用go build进行编译。您的程序将在启动时显示控制台窗口,然后立即隐藏它。