Windows GUI에 연결된 Go 애플리케이션을 사용하여 명령 창에 출력 인쇄
-ldflags -H=windowsgui 플래그를 사용하여 Go 애플리케이션을 컴파일하는 경우, 결과 실행 파일은 Windows GUI 응용 프로그램으로 실행되도록 설정됩니다. 기본적으로 GUI 애플리케이션은 콘솔에 액세스할 수 없으므로 인쇄된 문자열이 출력되지 않습니다.
이 문제를 해결하려면 syscall 패키지를 사용하여 GUI 프로세스를 상위 콘솔에 명시적으로 연결할 수 있습니다. 이를 통해 애플리케이션은 명령 창에 출력을 인쇄할 수 있습니다.
package main import ( "fmt" "syscall" ) const ( ATTACH_PARENT_PROCESS = ^uint32(0) // (DWORD)-1 ) 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("Okay, attached") } }
상위 콘솔에 연결한 후 애플리케이션은 표준 fmt.Println() 함수를 사용하거나 syscall.Stdout에 직접 쓸 수 있는 출력을 인쇄할 수 있습니다. 그러나 AttachConsole()이 실패하면 애플리케이션은 다음 중 하나를 수행해야 합니다.
위 내용은 Go GUI 응용 프로그램이 어떻게 명령 창에 인쇄할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!