Need help on compiling the JUCE demo app


#1

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!


#2

I’ve tested the release source package 1.46 has no such problems. Everything seems running well out of the box. And also some files are missing in the SVN version(2 as I remember while compileing the lib.). Expecting the next release if there are attractive functions having been added.


#3

I’m not supporting mingw, so I’m afraid you’re on your own sorting out any build problems with that!


#4

Thanks! I see. It’s true the svn version compiles under VS2008 without a problem.