I have noticed that JUCE doesn't support building for the Console subsystem by default anymore. Is that an intentional change?
Our product can be built in a few different ways, one way is the usual way with GUI, but another way is as a command line application. It still runs the event loop for timers and such, but it needs to work as a console application (i.e. it displays stdout and stderr on the console and it usually doesn't display a GUI).
The reason why it doesn't build is that if you build a console application, the linker expects int main(int, char**) rather than WinMain(....) as your entry point (as on the UNIX platforms).
I got it working by changing the preprocessor checks in juce_Initialisation.h:95 and juce_ApplicationBase.cpp:141 to check if _CONSOLE is not defined:
#if JUCE_WINDOWS && !defined(_CONSOLE)
and to add
#ifdef _CONSOLE const char* const* juce_argv = nullptr; int juce_argc = 0; #endif
somewhere in the native windows code (I put it in juce_win32_Files.cpp for consistency).