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

console go

33646 просмотра

3 ответа

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

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

Автор: Bart Silverstrim Источник Размещён: 12.11.2019 09:26

Ответы (3)


49 плюса

Решение

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

go build -ldflags -Hwindowsgui filename.go

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

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

go build -ldflags -H=windowsgui filename.go

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

Автор: Bart Silverstrim Размещён: 23.04.2014 04:43

36 плюса

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

 go build -ldflags "-H windowsgui" 

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

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

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

Автор: Shannon Matthews Размещён: 01.07.2015 06:19

9 плюса

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

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

Автор: gonutz Размещён: 21.08.2017 11:16
Вопросы из категории :
32x32