Ukrycie okna konsoli (Visual Studio 2022)

Ukrycie okna konsoli (Visual Studio 2022)
CR
  • Rejestracja: dni
  • Ostatnio: dni
0

To w sumie nie jest stricte zagadnienie z zakresu C++... ale może być.

Chciałbym pozbyć się okna konsoli w okienkowej aplikacji napisanej pod Windowsa. Najprostszym rozwiązanie jest podmiana subsystemu w linkerze z CONSOLE na WINDOWS i ewentualne dodanie mainCRTStartup jako domyślnego entry point'a, żeby potem nie musieć się pierdzielić z windowsowym WinMain(). O ile zrobi się to ręcznie, z poziomu ustawień środowiska (w moim przypadku Visual Studio 2022), działa jak należy. Gdy jednak robię to przez pragma comment, program poprawnie się kompiluje, ale okno konsoli nadal się pojawia.

Kopiuj
#pragma comment(linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")

Widocznie ustawienie tego ręcznie, z poziomu środowiska, przełącza coś jeszcze, ale nie mam pojęcia co. Ktoś ma pomysł jak to rozwiązać?

Marius.Maximus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2202
0

"Klikalne" środowisko generuje pliki tekstowe a te można porównać przed i po kliknięciu to to może natchnąć
Alternatywna metoda aczkolwiek to moze być armata na muche to użycie cmake add_executable(<name> [WIN32] ...) i wtedy masz wlaczenie konsoli ogarniete na poziomie cmake

SP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 181
0

Nigdy z tego VS na poważnie nie korzystałem, w GNU gcc i g++ mają flagę -mwindows, a cała ta konsola to jest przestawienie jednego bitu z 0/1 w headerze pliku wykonywalnego PE.

Ale chyba zmienianie ręcznie bitów cię nie interesuje, ale jak coś to skompiluj ten sam program raz z -mwindows raz bez i zrób diffa to znajdziesz, który to bit, tak akurat nie pamiętam gdzie to w headerze było.

DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 150
0

Przypuszczalnie masz ustawiony subsystem w Linker->System->SubSystem

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

SDL (nie wiem jak w najnowszych wersjach, mogło się zmienić) rozwiązuje to w ten sposób, że w pomocniczej libce SDLmain jest dostarczana funkcja WinMain, która wywołuje main napisaną przez użytkownika.
VC++ oczekuje WinMain, znajduje ją w SDLmain.lib, a użytkownik dostarcza main i nic się dla niego nie zmienia – jego main jest albo prawdziwym mainem, albo jest wołany przez WinMain z libki.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

Zwyczajnie tworzysz aplikacje dla Windows (niby GUI), zaś WinMain nie tworzy żadnego okna a wykona wszystko co trzeba.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.