Розбираємося із проблемою відкриття окремого вікна консолі в Mingw для Windows

Розбираємося із проблемою відкриття окремого вікна консолі в Mingw для Windows

6 Березня 2024 в 20:39 36

Консольні програми, створені за допомогою Mingw для Windows, часом відкривають окреме вікно консолі при запуску з Windows Console (cmd.exe). Це може бути несподіваним і дратівливим для розробників. Недавно я стикнувся з цією проблемою, коли компілював просту програму hello world для Windows з Linux:

До мого здивування, при запуску скомпільованого виконуваного файлу з Windows Console, відкривалось окреме вікно консолі замість того, щоб виводити повідомлення stdout в тому ж вікні консолі. Це викликало питання:

  • Чи є ця поведінка помилкою в версії стандартної бібліотеки Mingw-W64 C?
  • Чи існує спосіб запобігти відкриттю окремого вікна консолі для програми?

Я ретельно шукав рішення, але не зміг знайти жодного опису проблеми, навіть на Stack Overflow. Також порівнював це з запуском консольної програми стороннього виробника з Windows Console (usbip.exe), яка працювала так, як очікувалося.

Деякі поради, які я знайшов, стосувалися пропуску прапорця -mconsole під час процесу компіляції. Однак це не вирішувало проблему. Я навіть спробував використати -mwindows, що запобігло відкриттю нового вікна консолі, але також не виводило нічого на вікно консолі.