web-dev-qa-db-ja.com

Windowsアプリケーションのコンソールを非表示

Qtアプリケーションがあり、このアプリケーションを実行すると、背後にコンソールが開きます。開発では、コンソールにデバッグ出力が表示されるので便利ですが、この実行可能ファイルを顧客に提供したい場合、コンソールウィンドウは表示されません。どうやって隠すの?

(私はVisual Studio 2008を使用しています)

48
ufukgun

リンカ設定が正しくないようです。プロジェクト、プロパティ、リンカー、システム、サブシステム設定を右クリックします。 「コンソール」ではなく、「Windows」が選択されていることを確認します。

そして、main()をWinMain()に変更します。

49
Hans Passant

プロジェクトビルドリンカーオプションセット

_/SUBSYSTEM:windows
/ENTRY:mainCRTStartup
_

または、次の#pragmaをソースファイルでint main(...)とともに使用します

_#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
_
105
datenwolf

以下を呼び出すことで、コンソールを取り除くことができます:

FreeConsole();
15
Daniel Munoz

私はその方法を使用し、それは働いた

HWND hwnd = GetConsoleWindow();
ShowWindow(hwnd, 0);
12
ufukgun

次のソリューション;)

Env:WixXP x64、msvs 2008、Qt v4.5.3

  1. プロジェクトの設定/構成プロパティ/リンカー/システム/サブシステム= Windows(/ SUBSYSTEM:WINDOWS)

    しかし、x64の場合、リンカーエラーがあります:LNK2019:関数_WinMainCRTStartupで参照されている未解決の外部シンボル_WinMain

  2. 次のコードを置き換えます。

    int main(int argc, char *argv[])
    {
         QApplication app(argc, argv);
         // your code*
    }
    

    によって

    int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char*, int nShowCmd)
    {
        int argc = 0;
        QApplication app( argc, 0 );
     }
    

Win32およびx64プラットフォームの両方で正常に動作します。

7

プロパティ-> リンカー-> システム-> サブシステム | Windows

そして、リンカーエラーを取得します。

Linker-> Advanced-> Entry Pointをご覧ください

値を「メイン」関数の名前に設定します。

メイン機能が「メイン」である場合、それはエントリポイントになります。

6
Guest

より良いオプションは、単にアンディMが示唆したように単に削除するのではなく、*。proファイルを編集して、

CONFIG(debug, debug|release) {
    CONFIG *= console
} 
else {
    CONFIG -= console
}

デバッグではコンソールウィンドウが表示されますが、リリースでは表示されません。私はそれが好きです。 =)

5
Wildcat

.PROファイルに次の行があるかどうかを確認することをお勧めします。

CONFIG += console

見つかったら削除してください!問題が解決するはずです!

それが役に立てば幸い !

4
Andy M

に移動:Projects --> RunおよびRun in terminalチェックボックス

0
Artem Zaytsev

.vcxprojを直接編集する場合は、次のようにSubSystemWindowsに追加して、LinkItemDefinitionGroupに追加します。

<ItemDefinitionGroup>
  <Link>
    <SubSystem>Windows</SubSystem>
  </Link>
</ItemDefinitionGroup>
0
Dogmatixed