-ldflags -H=windowsgui を使用してコマンド プロンプトに出力する
-ldflags -H=windowsgui を使用して Go アプリケーションをコンパイルする場合、標準入出力のハンドルが閉じられているため、コマンド プロンプトに出力を出力することが困難になります。この制限を克服するには、プロセスを親のコンソールに接続する必要があります。
これを実現する 1 つの方法は、syscall パッケージの AttachConsole 関数を使用することです。
package main import ( "fmt" "syscall" ) 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(syscall.ATTACH_PARENT_PROCESS) if ok { fmt.Println("Okay, attached") } }
AttachConsole を呼び出すことで、プロセスはコンソールにアクセスし、必要に応じてメッセージを出力できます。
AttachConsole が失敗した場合、代替オプションとして GUI ダイアログの作成が含まれます。または、AllocConsole を使用して新しいコンソール ウィンドウを割り当てます。ただし、GUI ダイアログにメッセージを表示する方が使いやすく、通常はコンソールに関連付けられているバージョン情報を表示するのに適しています。
以上がGo で `-ldflags -H=windowsgui` を使用するときにコマンド プロンプトに出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。