2014-04-23 4 views
38

Ich habe eine Anwendung erstellt, die ich unsichtbar im Hintergrund ausführen möchte (kein Befehl/cmd-Konsole). Wie mache ich das?Wie erstelle ich eine ausführbare Datei von Golang, die beim Ausführen nicht ein Befehlsfenster (cmd) öffnet?

(Dies ist für Windows, getestet auf Windows 7 Pro 64 Bit)

+1

mögliches Duplikat von [Gibt es eine gefensterte Einstellungsoption für den Go-Compiler?] (Http://stackoverflow.com/questions/11391975/is-there-a-windowed-setting-option-for-the-go- Compiler) – kostix

+0

@kostix Wenn ich nach einer Konsole gesucht habe, wurde sie nicht angezeigt. Aber die Flagge, auf die Sie zeigen, ist in dieser Antwort, Sie haben Recht, denke ich, obwohl die Syntax immer noch ein wenig anders ist und ich nicht nach einer "gefensterten Option" suchte. –

Antwort

39

Die Online-Dokumentation sagt fand ich mit etwas entlang der Linien von kompilieren,

go build -ldflags -Hwindowsgui filename.go

Aber das gibt ein Fehler: unknown flag -Hwindowsgui

Bei neueren (? 1.1) Versionen des Compilers, sollte diese Arbeit:

go build -ldflags -H=windowsgui filename.go

Als ich mit der Suche fortfuhr, fand ich eine Notiz, dass die offizielle Dokumentation bald aktualisiert werden sollte, aber in der Zwischenzeit gibt es eine Menge älterer Beispiel-Antworten, die diesen Fehler enthalten.

23

Mit Go Version 1.4.2

go build -ldflags "-H windowsgui" 

From the Go docs:

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

-ldflags 'flag list' arguments to pass on each 5l, 6l, or 8l linker invocation.

2

Wenn Sie die lange bauen Anweisungen jedes Mal, während der Fehlersuche geben nicht wollen, aber Wenn das Konsolenfenster nicht mehr angezeigt werden soll, können Sie diesen Code am Anfang Ihres m hinzufügen ain Funktion:

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) 
     } 
    } 
} 

Jetzt können Sie mit go build kompilieren. Ihr Programm zeigt das Konsolenfenster beim Start kurz an und versteckt es dann sofort.

Verwandte Themen