Maison > développement back-end > Golang > Pourquoi mon application Go ne peut-elle pas s'imprimer sur la console lorsqu'elle est compilée avec `-ldflags -H=windowsgui` ?

Pourquoi mon application Go ne peut-elle pas s'imprimer sur la console lorsqu'elle est compilée avec `-ldflags -H=windowsgui` ?

Linda Hamilton
Libérer: 2024-12-03 05:32:10
original
694 Les gens l'ont consulté

Why Can't My Go Application Print to the Console When Compiled with `-ldflags -H=windowsgui`?

Impression de la sortie avec l'indicateur -H=windowsgui

Lors de la compilation d'une application Go avec l'indicateur -ldflags -H=windowsgui, il se peut qu'elle ne être capable d'imprimer la sortie dans une fenêtre de commande. En effet, l'exécutable est créé en tant que processus GUI qui n'est associé à aucune console, même lorsqu'il est invoqué depuis la console.

Pour imprimer la sortie dans ce scénario, il faut explicitement attacher le processus à la console. Ceci peut être réalisé à l'aide du package syscall :

package main

import (
    "fmt"
    "syscall"
)

const (
    ATTACH_PARENT_PROCESS = ^uint32(0)
)

var (
    modkernel32 = syscall.NewLazyDLL("kernel32.dll")
    procAttachConsole = modkernel32.NewProc("AttachConsole")
)

func AttachConsole(dwParentProcess uint32) (ok bool) {
    r0, _, _ := syscall.Syscall(procAttachConsole.Addr(), 1, uintptr(dwParentProcess), 0, 0)
    ok = bool(r0 != 0)
    return
}

func main() {
    ok := AttachConsole(ATTACH_PARENT_PROCESS)
    if ok {
        fmt.Println("Attached")
    }
}
Copier après la connexion

En appelant AttachConsole(ATTACH_PARENT_PROCESS), le processus Go est attaché à la console associée à son processus parent. Il peut ensuite imprimer le résultat sur la console.

Si AttachConsole échoue, il peut être nécessaire de créer manuellement une fenêtre de console à l'aide d'AllocConsole ou d'afficher une boîte de dialogue GUI avec les informations souhaitées à l'aide des bibliothèques GUI appropriées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal