Ответ 1
Похоже, ваша конфигурация компоновщика неверна. Щелкните правой кнопкой мыши настройки проекта, свойств, компоновщика, системы, подсистемы. Убедитесь, что выбрана "Windows", а не "Консоль".
И, измените main() на WinMain().
У меня есть приложение 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
Установить настройки проектов/Свойства конфигурации /Linker/System/SubSystem = Windows (/SUBSYSTEM: WINDOWS)
Но для x64 существует ошибка компоновщика: LNK2019: неразрешенный внешний символ _WinMain, указанный в функции _WinMainCRTStartup " Чтобы избежать этого
Замените следующий код:
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.
Может быть лучшим вариантом будет не просто удалить (как предположил Энди М), а отредактировать файл *.pro, добавив что-то вроде
CONFIG(debug, debug|release) {
CONFIG *= console
}
else {
CONFIG -= console
}
В отладке вы можете видеть окно консоли, но не в выпуске. Мне это нравится. =)
Я бы предложил проверить наличие следующей строки в вашем файле .PRO:
CONFIG += console
Если вы можете найти его, удалите его! Он должен исправить вашу проблему!
Надеюсь, что это поможет!
Если вы используете Properties- > Linker- > System- > SubSystem | Окна
И получите ошибку компоновщика.
Вы можете посмотреть Linker- > Advanced- > Entry Point
и установите значение для имени вашей "основной" функции.
Это ваша точка входа становится основной, если ваша основная функция является "основной".
Для тех, кто непосредственно редактирует .vcxproj, вы хотите добавить SubSystem
со значением Windows
к вашему Link
ItemDefinitionGroup
следующим образом:
<ItemDefinitionGroup>
<Link>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
Установите флажок Projects --> Run
и снимите флажок Run in terminal
Это сработало для меня:
CONFIG(debug, debug|release) {
CONFIG *= console
}
else {
CONFIG -= console
}
Мне нужно было запустить exe для мониторинга файла с помощью QFileSystemWatcher
, поэтому я использовал это:
CONFIG -= console