Qtアプリケーションがあり、このアプリケーションを実行すると、背後にコンソールが開きます。開発では、コンソールにデバッグ出力が表示されるので便利ですが、この実行可能ファイルを顧客に提供したい場合、コンソールウィンドウは表示されません。どうやって隠すの?
(私はVisual Studio 2008を使用しています)
リンカ設定が正しくないようです。プロジェクト、プロパティ、リンカー、システム、サブシステム設定を右クリックします。 「コンソール」ではなく、「Windows」が選択されていることを確認します。
そして、main()をWinMain()に変更します。
プロジェクトビルドリンカーオプションセット
_/SUBSYSTEM:windows
/ENTRY:mainCRTStartup
_
または、次の#pragmaをソースファイルでint main(...)
とともに使用します
_#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
_
以下を呼び出すことで、コンソールを取り除くことができます:
FreeConsole();
私はその方法を使用し、それは働いた
HWND hwnd = GetConsoleWindow();
ShowWindow(hwnd, 0);
次のソリューション;)
Env:WixXP x64、msvs 2008、Qt v4.5.3
プロジェクトの設定/構成プロパティ/リンカー/システム/サブシステム= Windows(/ SUBSYSTEM:WINDOWS)
しかし、x64の場合、リンカーエラーがあります:LNK2019:関数_WinMainCRTStartupで参照されている未解決の外部シンボル_WinMain
次のコードを置き換えます。
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プラットフォームの両方で正常に動作します。
プロパティ-> リンカー-> システム-> サブシステム | Windows
そして、リンカーエラーを取得します。
Linker-> Advanced-> Entry Pointをご覧ください
値を「メイン」関数の名前に設定します。
メイン機能が「メイン」である場合、それはエントリポイントになります。
より良いオプションは、単にアンディMが示唆したように単に削除するのではなく、*。proファイルを編集して、
CONFIG(debug, debug|release) {
CONFIG *= console
}
else {
CONFIG -= console
}
デバッグではコンソールウィンドウが表示されますが、リリースでは表示されません。私はそれが好きです。 =)
.PROファイルに次の行があるかどうかを確認することをお勧めします。
CONFIG += console
見つかったら削除してください!問題が解決するはずです!
それが役に立てば幸い !
に移動:Projects --> Run
およびRun in terminal
チェックボックス
.vcxprojを直接編集する場合は、次のようにSubSystem
をWindows
に追加して、Link
ItemDefinitionGroup
に追加します。
<ItemDefinitionGroup>
<Link>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>