Подтвердить что ты не робот

Как создать исполняемый файл из Golang, который не запускает окно консоли при запуске?

Я создал приложение, которое хочу запускать незаметно в фоновом режиме (без консоли). Как мне это сделать?

(Это для Windows, протестировано на Windows 7 Pro 64 bit)

4b9b3361

Ответ 1

Документация, найденная в сети, говорит, что я могу скомпилировать что-то в строках,

go build -ldflags -Hwindowsgui filename.go

Но это дает ошибку: unknown flag -Hwindowsgui

С более поздними версиями (1.1?) компилятора это должно работать:

go build -ldflags -H=windowsgui filename.go

Когда я продолжил поиск, я нашел примечание о том, что официальная документация должна быть обновлена ​​в ближайшее время, но в то же время есть много примеров ответа в стиле старого стиля, где есть ошибка.

Ответ 2

Использование Go версии 1.4.2

 go build -ldflags "-H windowsgui" 

Из документов Go:

go build [-o output] [-i] [build flags] [packages]

-ldflags 'flag list' аргументы для передачи каждого вызова 5l, 6l или 8l-линкера.

Ответ 3

Если вы не хотите вводить команды длинной сборки каждый раз во время отладки, но все же хотите, чтобы окно консоли исчезло, вы можете добавить этот код в начале своей основной функции:

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. Ваша программа покажет окно консоли на короткое время при запуске, а затем сразу же скроет его.