I got JUCE from svn and tried to compile the library and the demo app. The static libaray itself compiles without any problem but not for the demo app. I’m using CodeBlocks and MingW.
||=== Juce Demo App, Release ===|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0x54)||undefined reference to `juce::SystemStats::getMemorySizeInMegabytes()'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0x5f)||undefined reference to `juce::SystemStats::has3DNow()'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0x79)||undefined reference to `juce::SystemStats::hasSSE2()'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0x90)||undefined reference to `juce::SystemStats::hasSSE()'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0xa7)||undefined reference to `juce::SystemStats::hasMMX()'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0xbe)||undefined reference to `juce::SystemStats::getNumCpus()'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0xc9)||undefined reference to `juce::SystemStats::getCpuSpeedInMegaherz()'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0xdb)||undefined reference to `juce::SystemStats::getCpuVendor()'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0xe4)||undefined reference to `juce::SystemStats::getOperatingSystemName()'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0x266)||undefined reference to `juce::SystemStats::getMACAddresses(long long*, int, bool)'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0x33a)||undefined reference to `juce::File::getSpecialLocation(juce::File::SpecialLocationType)'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0x354)||undefined reference to `juce::File::getSpecialLocation(juce::File::SpecialLocationType)'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0x36e)||undefined reference to `juce::File::getSpecialLocation(juce::File::SpecialLocationType)'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0x388)||undefined reference to `juce::File::getSpecialLocation(juce::File::SpecialLocationType)'|
build\.objs\src\ApplicationStartup.o:ApplicationStartup.cpp:(.text$_ZN19JUCEDemoApplication21collectSomeSystemInfoEv[JUCEDemoApplication::collectSomeSystemInfo()]+0x3a2)||undefined reference to `juce::File::getSpecialLocation(juce::File::SpecialLocationType)'|
)]+0x95)||undefined reference to `juce::Logger::outputDebugString(juce::String const&)'|
build\.objs\src\MainDemoWindow.o:MainDemoWindow.cpp:(.text+0x6bc)||undefined reference to `juce::SystemTrayIconComponent::setIconImage(juce::Image const&)'|
build\.objs\src\MainDemoWindow.o:MainDemoWindow.cpp:(.text+0x6e4)||undefined reference to `juce::SystemTrayIconComponent::setIconTooltip(juce::String const&)'|
build\.objs\src\MainDemoWindow.o:MainDemoWindow.cpp:(.text+0xc50)||undefined reference to `juce::SystemTrayIconComponent::setIconImage(juce::Image const&)'|
build\.objs\src\MainDemoWindow.o:MainDemoWindow.cpp:(.text+0xc78)||undefined reference to `juce::SystemTrayIconComponent::setIconTooltip(juce::String const&)'|
build\.objs\src\MainDemoWindow.o:MainDemoWindow.cpp:(.rdata$_ZTV14MainDemoWindow[vtable for MainDemoWindow]+0xb8)||undefined reference to `juce::Component::createNewPeer(int, void*)'|
build\.objs\src\MainDemoWindow.o:MainDemoWindow.cpp:(.rdata$_ZTV11ContentComp[vtable for ContentComp]+0xb8)||undefined reference to `juce::Component::createNewPeer(int, void*)'|
build\.objs\src\MainDemoWindow.o:MainDemoWindow.cpp:(.rdata$_ZTV16SourceCodeWindow[vtable for SourceCodeWindow]+0xb8)||undefined reference to `juce::Component::createNewPeer(int, void*)'|
build\.objs\src\MainDemoWindow.o:MainDemoWindow.cpp:(.rdata$_ZTV20DemoTaskbarComponent[vtable for DemoTaskbarComponent]+0xb8)||undefined reference to `juce::Component::createNewPeer(int, void*)'|
build\.objs\src\demos\AudioDemo.o:AudioDemo.cpp:(.rdata$_ZTV9AudioDemo[vtable for AudioDemo]+0xb8)||undefined reference to `juce::Component::createNewPeer(int, void*)'|
::~OwnedArray()]+0x3a)||undefined reference to `juce::CriticalSection::enter() const'|
::~OwnedArray()]+0xb9)||undefined reference to `juce::CriticalSection::exit() const'|
::~OwnedArray()]+0xc2)||undefined reference to `juce::CriticalSection::~CriticalSection()'|
::~OwnedArray()]+0xfc)||undefined reference to `juce::CriticalSection::~CriticalSection()'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemo32DemoInterprocessConnectionServer22createConnectionObjectEv[InterprocessCommsDemo::DemoInterprocessConnectionServer::createConnectionObject()]+0xa0)||undefined reference to `juce::CriticalSection::enter() const'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemo32DemoInterprocessConnectionServer22createConnectionObjectEv[InterprocessCommsDemo::DemoInterprocessConnectionServer::createConnectionObject()]+0x176)||undefined reference to `juce::CriticalSection::exit() const'|
)]+0x40)||undefined reference to `juce::CriticalSection::enter() const'|
)]+0x113)||undefined reference to `juce::CriticalSection::exit() const'|
)]+0xba)||undefined reference to `juce::CriticalSection::exit() const'|
)]+0xee)||undefined reference to `juce::CriticalSection::enter() const'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD1Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0x74)||undefined reference to `juce::CriticalSection::enter() const'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD1Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0xf5)||undefined reference to `juce::CriticalSection::exit() const'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD1Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0x20f)||undefined reference to `juce::CriticalSection::enter() const'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD1Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0x291)||undefined reference to `juce::CriticalSection::exit() const'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD1Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0x29a)||undefined reference to `juce::CriticalSection::~CriticalSection()'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD1Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0x302)||undefined reference to `juce::CriticalSection::~CriticalSection()'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD0Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0x74)||undefined reference to `juce::CriticalSection::enter() const'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD0Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0xf5)||undefined reference to `juce::CriticalSection::exit() const'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD0Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0x20f)||undefined reference to `juce::CriticalSection::enter() const'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD0Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0x291)||undefined reference to `juce::CriticalSection::exit() const'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD0Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0x29a)||undefined reference to `juce::CriticalSection::~CriticalSection()'|
build\.objs\src\demos\InterprocessCommsDemo.o:InterprocessCommsDemo.cpp:(.text$_ZN21InterprocessCommsDemoD0Ev[InterprocessCommsDemo::~InterprocessCommsDemo()]+0x30b)||undefined reference to `juce::CriticalSection::~CriticalSection()'|
bool)]+0x77)||undefined reference to `juce::CriticalSection::enter() const'|
bool)]+0x100)||undefined reference to `juce::CriticalSection::exit() const'|
bool)]+0x5af)||undefined reference to `juce::CriticalSection::enter() const'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build finished: 50 errors, 0 warnings ===|
It seems c and c++ name mangling problem. Please help!