Мое приложение не запустится, если я не объявлю main как wmain. Это почему? (Visual Studio 19)

Я работал над прототипами приложения, использующего библиотеки SDL и winsock, когда внезапно столкнулся с этой ошибкой при компиляции:

LNK2019 неразрешенный внешний символ main, на который ссылается функция int __cdecl invoke_main (void) (? Invoke_main @@ YAHXZ)

Я попытался изменить параметр «Подсистема» на «Windows» и «Консоль» и т. Д., Но это привело только к той же ошибке с другим сообщением WinMain о неразрешенном внешнем символе. После некоторого исследования я прислушался к совету кого-то изменить основной на wmain и вуаля — приложение работало, как задумано.

Что меня интересует, так это то, что я не менял никаких настроек по умолчанию из Visual Studio, кроме стандарта C ++ (который я изменил с C ++ 11 на C ++ 17), и других моих проектов, в которых есть опция Use Unicode Character Set. включены, работают с обычной функцией main (). Так что именно заставляет меня использовать здесь wmain вместо обычного main?

Согласно эта страница официальная документация Microsoft, main или wmain должна использоваться для /SUBSYSTEM CONSOLE и WinMain или wWinMain должна использоваться для /SUBSYSTEM WINDOWS.   —  person emredesu    schedule 01.11.2020

Я нахожу этот вопрос немного запутанным, но wmain — это точка входа для консольных приложений Unicode.   —  person emredesu    schedule 01.11.2020

Выложите пожалуйста код и настройки сборки. У SDL есть свои подходы к основному (SDL_main, SDL_MAIN_HANDLED, SDL_SetMainReady и т. Д.), И трудно угадать, какой из них вы используете.   —  person emredesu    schedule 01.11.2020

Источник: ledsshop.ru

Стиль жизни - Здоровье!