Ukrycie okna konsoli (Visual Studio 2022)

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.

#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ć?

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

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.

0

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

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.

1

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1