haskellプロジェクトからビルドされたexeファイルを実行しているときにコマンドプロンプトが開かないようにする

Nov 30 2020

GUI用のグロスライブラリを使用する小さなアプリケーションを作成しました。「cabalrun [cabal file]」と入力すると、プロジェクトがビルドされて実行され、GUIにプロンプ​​トが表示されるだけです。代わりに、ビルドから生成された.exeファイルに移動してクリックすると、GUIが開きますが、コマンドプロンプトも開きます。コマンドプロンプトが開かないようにし、光沢のあるウィンドウのみを開きたい。

回答

3 JonPurdy Nov 30 2020 at 20:08

Windowsでは、デフォルトでGHCはコンソールプログラムをビルドします。コンソールプログラムは、まだ開いていない場合はコマンドプロンプトターミナルを開きます。GUIのみのプログラムを作成する場合は、GHCにフラグを指定-mwindowしてリンカーに渡すことができます-optl -mwindow。Cabalを使用している場合は、このフラグをghc-options実行可能スタンザのフィールドに追加します。

このフラグを使用する場合は、あなたのプログラムがいずれかを持っていないことに注意してくださいstdinstdoutまたはstderrのような行動ので、ファイルハンドルputStrLnprintと、getLine動作しません、と彼らはしている同等以来hPutStrLn stdouthPrint stdouthGetLine stdin。ロギングまたは印刷を実行する場合は、ハンドルを自分で開く必要があります(たとえば、ファイル、端末、またはソケットで、別のプログラムがもう一方の端を読み取る)。ただし、Debug.Traceデバッグのために一時的なトレースが必要な場合でも機能します。

より役立つリファレンス情報は、GHCユーザーガイド§16にあります。Win32システムでGHCを実行します。