Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Лишняя консоль в оконном приложении |
Автор: Курсант 22.1.2017, 23:24 |
Всем здравствуйте! Создаю оконное приложение (обычный пример оконного приложения), но рядом с окном запускается консоль. Откуда она берётся? Использую компилятор gcc и среду Code::Blocks. |
Автор: vol4ek 22.1.2017, 23:35 |
код покажите или ссылку дайте на пример который скачивали |
Автор: GremlinProg 23.1.2017, 05:39 |
Значит, создаете консольное приложение. Проверьте свойства проекта. |
Автор: Курсант 24.1.2017, 13:55 | ||||||
Добавлено @ 13:58
Спасибо, наверное, так и есть. Правда в Code::Blocks я создаю GUI-приложение, Frame-Based. По идее это ведь ни на что не влияет, только на начальный код проекта? Если формат файла PE, если я явно нигде не создаю консоль, значит никто не может мне вызвать консоль, кроме меня? Но я нигде её явно не вызываю. Получается, есть отдельный вид приложений, для которых консоль создаётся по умолчанию операционной системой? Какая-то муть. Решил попробовать поработать в gcc, и вот уже какие-то сюрпризы непонятные. |
Автор: vol4ek 24.1.2017, 14:24 |
код нормальный и в студии все ок. откуда Code::Bloks берет консоль и как приаттачивает ее к виндовс окну я хз ![]() никогда не пользовался этой IDE. Добавлено через 1 минуту и 39 секунд смотрите настройки проекта в Code::Bloks или взьмите VS если есть под рукой |
Автор: xvr 24.1.2017, 14:45 |
Запустите полученный exe вне CodeBlocks. Есть консольное окно? Если нет - то это происки самого CodeBlocks, если есть - то это происки компилятора ![]() |
Автор: vol4ek 24.1.2017, 14:51 | ||
студия выплюнет такой код на функции WinMain если проект будет консольный, какого его CodeBloks жреть ![]() |
Автор: Курсант 24.1.2017, 17:41 | ||||
Хы, запустил - консоль есть и вне Code::Blocks, и в Code::Blocks. Только вне Code::Blocks консоль закрывается при закрытии окна, а при запуске из под Code::Blocks при закрытии окна в консоли отображается время работы программы и предлагается нажать любую кнопку. Очень похоже на какой-нибудь дебагер из состава gcc, но не уверен. Что происходит в скомпилированном проекте - вообще понять не могу. Хотелось бы понять логику... Всё-таки так хочется оседлать и настроить вменяемо хотя бы одну бесплатную IDE и компилятор. Но ничего не получается, всё время какая-то ерунда получается... Добавлено через 2 минуты и 46 секунд
Взять VS, конечно, проще всего. Хочу запустить бесплатную IDE с компилятором, и разобраться, как работает. Люди же его делали, не обезьяны, наверное как-то работать должно... |
Автор: vol4ek 24.1.2017, 17:48 | ||
-Видишь суслика? - Нет. -А он есть ![]() |
Автор: GremlinProg 24.1.2017, 21:53 |
Здесь где-то уже разбирался подобный вопрос. В PE есть флаг, отвечающий за подсистему (subsystem) приложения. Если его выставить, то будет автоматически создаваться консоль. При этом, Вам ни кто не мешает тут же создать обычное окно. В WinApi есть аналог - AllocConsole. Если эта функция ни где у Вас не вызывается, значит консоль создается ядром, по флагу в PE. Посмотрите в документацию к своему компоновщику, как сменить подсистему. В vs тоже есть аналогичная опция: https://msdn.microsoft.com/en-us/library/fcc1zstk.aspx |
Автор: xvr 25.1.2017, 16:36 |
Исправленная ссылка - http://stackoverflow.com/questions/33690697/running-my-c-code-gives-me-a-blank-console |