Как создать исполняемый файл из Golang, который не запускает окно консоли при запуске?
Я создал приложение, которое хочу запускать незаметно в фоновом режиме (без консоли). Как мне это сделать?
(Это для Windows, протестировано на Windows 7 Pro 64 bit)
Ответ 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-линкера.
Если вы не хотите вводить команды длинной сборки каждый раз во время отладки, но все же хотите, чтобы окно консоли исчезло, вы можете добавить этот код в начале своей основной функции:
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. Ваша программа покажет окно консоли на короткое время при запуске, а затем сразу же скроет его.