Скрыть консоль приложения Windows - PullRequest
48 голосов
/ 26 января 2010

У меня есть приложение Qt, и когда я запускаю это приложение, за ним открывается консоль. В разработке это приятно, потому что я вижу отладочные результаты на консоли, но когда я хочу дать этот исполняемый файл клиенту, не должно быть никакого окна консоли. как мне это скрыть?

(я использую Visual Studio 2008)

Ответы [ 11 ]

102 голосов
/ 30 июля 2011

В настройках компоновщика проекта задайте

/SUBSYSTEM:windows
/ENTRY:mainCRTStartup

Или используйте следующую # pragma в исходном файле с int main(...)

#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
49 голосов
/ 26 января 2010

Похоже, что ваша конфигурация компоновщика неверна. Щелкните правой кнопкой мыши проект, Свойства, Компоновщик, Система, Подсистема. Убедитесь, что выбран «Windows», а не «Консоль».

И измените main () на WinMain ().

16 голосов
/ 13 сентября 2012

Вы можете избавиться от консоли, позвонив:

FreeConsole();
12 голосов
/ 26 января 2010

Я использую этот метод, и он работал

HWND hwnd = GetConsoleWindow();
ShowWindow(hwnd, 0);
7 голосов
/ 16 июня 2010

Следующее решение;)

Конверт: WixXP x64, msvs 2008, Qt v4.5.3

  1. Задать параметры проекта / Свойства конфигурации / Компоновщик / Система / Подсистема = Windows (/ SUBSYSTEM: WINDOWS)

    Но для x64 существует ошибка компоновщика: LNK2019: неразрешенный внешний символ _WinMain, указанный в функции _WinMainCRTStartup " Чтобы этого избежать

  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.

6 голосов
/ 12 мая 2015

Если вы используете Свойства -> Линкер -> Система -> Подсистема | Windows

И получите ошибку компоновщика.

Вы можете посмотреть Линкер -> Дополнительно -> Точка входа

и установите значение для имени вашей "основной" функции.

То есть ваша точка входа становится главной, если ваша основная функция является «главной».

5 голосов
/ 26 января 2010

Возможно, лучшим вариантом будет не просто удалить (как предложил Энди М), а отредактировать файл * .pro, добавив что-то вроде

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

В отладке вы можете видеть окно консоли, но не в выпуске. Мне это нравится. =)

4 голосов
/ 26 января 2010

Я бы посоветовал проверить наличие следующей строки в вашем файле .PRO:

CONFIG += console

Если найдешь, убери! Это должно исправить вашу проблему!

Надеюсь, это поможет!

0 голосов
/ 01 декабря 2016

Это сработало для меня:

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

Мне нужно было запустить exe-файл для мониторинга файла, используя QFileSystemWatcher, поэтому я использовал это:

CONFIG -= console
0 голосов
/ 17 февраля 2015

Перейти к: Projects --> Run и снять флажок Run in terminal флажок

...