Cant compile project updated to 4.2 (VST2 classes related)


#1

Undefined symbols for architecture x86_64: "Steinberg::MemoryStream::seek(long long, int, long long*)", referenced from: juce::VST3Classes::VST3PluginInstance::synchroniseStates() in juce_audio_processors.o "Steinberg::MemoryStream::getData()", referenced from: void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IComponent>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IComponent>&, juce::String const&) in juce_audio_processors.o void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IEditController>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IEditController>&, juce::String const&) in juce_audio_processors.o juce::VST3Classes::VST3PluginInstance::createMemoryStreamForState(juce::XmlElement&, juce::StringRef) in juce_audio_processors.o "Steinberg::MemoryStream::getSize()", referenced from: void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IComponent>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IComponent>&, juce::String const&) in juce_audio_processors.o void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IEditController>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IEditController>&, juce::String const&) in juce_audio_processors.o "Steinberg::MemoryStream::setSize(long long)", referenced from: juce::VST3Classes::VST3PluginInstance::createMemoryStreamForState(juce::XmlElement&, juce::StringRef) in juce_audio_processors.o "Steinberg::MemoryStream::MemoryStream()", referenced from: void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IComponent>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IComponent>&, juce::String const&) in juce_audio_processors.o void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IEditController>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IEditController>&, juce::String const&) in juce_audio_processors.o juce::VST3Classes::VST3PluginInstance::createMemoryStreamForState(juce::XmlElement&, juce::StringRef) in juce_audio_processors.o juce::VST3Classes::VST3PluginInstance::synchroniseStates() in juce_audio_processors.o "Steinberg::MemoryStream::~MemoryStream()", referenced from: void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IComponent>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IComponent>&, juce::String const&) in juce_audio_processors.o void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IEditController>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IEditController>&, juce::String const&) in juce_audio_processors.o juce::VST3Classes::VST3PluginInstance::synchroniseStates() in juce_audio_processors.o "Steinberg::IPluginFactory2::iid", referenced from: juce::ComSmartPtr<Steinberg::IPluginFactory2>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::IPluginFactory3::iid", referenced from: juce::ComSmartPtr<Steinberg::IPluginFactory3>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::ConstStringTable::instance()", referenced from: ___cxx_global_var_init127 in juce_audio_processors.o ___cxx_global_var_init128 in juce_audio_processors.o "Steinberg::Vst::IComponent::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IComponent>::loadFrom(Steinberg::IPluginFactory*, char const (&) [16]) in juce_audio_processors.o "Steinberg::Vst::IUnitHandler::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o "Steinberg::Vst::IAttributeList::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o juce::VST3Classes::VST3HostContext::createInstance(char*, char*, void**) in juce_audio_processors.o "Steinberg::Vst::IAudioProcessor::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IAudioProcessor>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IEditController::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IEditController>::loadFrom(Steinberg::IPluginFactory*, char const (&) [16]) in juce_audio_processors.o juce::ComSmartPtr<Steinberg::Vst::IEditController>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IConnectionPoint::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IConnectionPoint>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IEditController2::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IEditController2>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IHostApplication::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o "Steinberg::Vst::IProgramListData::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IProgramListData>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IComponentHandler::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o juce::ComSmartPtr<Steinberg::Vst::IComponentHandler>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IComponentHandler2::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o juce::ComSmartPtr<Steinberg::Vst::IComponentHandler2>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IComponentHandler3::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o "Steinberg::Vst::IContextMenuTarget::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o "Steinberg::Vst::IMessage::iid", referenced from: juce::VST3Classes::VST3HostContext::createInstance(char*, char*, void**) in juce_audio_processors.o "Steinberg::Vst::IUnitData::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IUnitData>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IUnitInfo::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IUnitInfo>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::FUID::FUID(char const*)", referenced from: juce::VST3Classes::VST3PluginInstance::fetchComponentAndController(Steinberg::IPluginFactory*, int) in juce_audio_processors.o "Steinberg::FUID::~FUID()", referenced from: juce::VST3Classes::VST3PluginInstance::fetchComponentAndController(Steinberg::IPluginFactory*, int) in juce_audio_processors.o "Steinberg::String::String(char const*, int, bool)", referenced from: juce::VST3Classes::VST3HostContext::getName(unsigned short*) in juce_audio_processors.o juce::VST3Classes::VST3HostContext::AttributeList::getString(char const*, unsigned short*, unsigned int) in juce_audio_processors.o "Steinberg::String::~String()", referenced from: juce::VST3Classes::VST3HostContext::getName(unsigned short*) in juce_audio_processors.o juce::VST3Classes::VST3HostContext::AttributeList::getString(char const*, unsigned short*, unsigned int) in juce_audio_processors.o "Steinberg::FUnknown::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o "Steinberg::IPlugView::iid", referenced from: juce::VST3Classes::VST3PluginInstance::tryCreatingView() const in juce_audio_processors.o "Steinberg::ConstString::copyTo(unsigned short*, unsigned int, int) const", referenced from: juce::VST3Classes::VST3HostContext::getName(unsigned short*) in juce_audio_processors.o juce::VST3Classes::VST3HostContext::AttributeList::getString(char const*, unsigned short*, unsigned int) in juce_audio_processors.o "Steinberg::ConstStringTable::getString(char const*) const", referenced from: ___cxx_global_var_init127 in juce_audio_processors.o ___cxx_global_var_init128 in juce_audio_processors.o "Steinberg::FUID::isValid() const", referenced from: juce::VST3Classes::VST3PluginInstance::fetchComponentAndController(Steinberg::IPluginFactory*, int) in juce_audio_processors.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)


#2

Got to build it by unchecking the Use VST3 checkbox and all the other targets and just building the VST one.

Is this the expected workflow for building now? (Mark the checkbox on the PaidJucer, go to xCode, press build, then repeat ad nauseam) – If so this sucks incredibly so much i can’t express it in human language

Also the forum is awful, hate Discourse and Jeff Atwood, i couldn’t recover my old sambecket account or the carlos@nyrv I’m sure i used to have.

I hate change it slows down projects


#3

I am sorry to hear you don’t like the new forum. Hopefully you’ll get used to it eventually, we received a lot of positive feedback so far. If we want to make JUCE a better framework and grow our community of users, there will always be some change, I don’t see how evolution and improvement would be possible without it…

What you are describing is not the expected workflow for building. You don’t have to uncheck all other targets in the Projucer to build VST. You can simply select the target you want to build in Xcode, without resaving from the Projucer, like this:

You can also build all targets at once using the “All” target (which will build everything you have ticked, like it did before).

In this case it just looks like the path to the VST3 SDK is wrong?

The Projucer is now open source and just as free to use as the Introjucer previously was! Only the live-coding engine is sold separately. So nothing really changed here apart from the app name and more colourful icon. Hope this kind of change does not slow your projects down too much :wink:


#4

Im familiar with the Targets mechanism.

So then i have to report a bug, in this project just recently updated, if i hit the 2 checkboxes on the Jucer: build VST & Build VST3, i get those errors again.

Tried 2 times on 2 macs, the SDK files are there. (It builds ok when only one of the checkboxes marked)

Undefined symbols for architecture x86_64: "Steinberg::MemoryStream::seek(long long, int, long long*)", referenced from: juce::VST3Classes::VST3PluginInstance::synchroniseStates() in juce_audio_processors.o "Steinberg::MemoryStream::getData()", referenced from: void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IComponent>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IComponent>&, juce::String const&) in juce_audio_processors.o void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IEditController>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IEditController>&, juce::String const&) in juce_audio_processors.o juce::VST3Classes::VST3PluginInstance::createMemoryStreamForState(juce::XmlElement&, juce::StringRef) in juce_audio_processors.o "Steinberg::MemoryStream::getSize()", referenced from: void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IComponent>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IComponent>&, juce::String const&) in juce_audio_processors.o void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IEditController>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IEditController>&, juce::String const&) in juce_audio_processors.o "Steinberg::MemoryStream::setSize(long long)", referenced from: juce::VST3Classes::VST3PluginInstance::createMemoryStreamForState(juce::XmlElement&, juce::StringRef) in juce_audio_processors.o "Steinberg::MemoryStream::MemoryStream()", referenced from: void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IComponent>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IComponent>&, juce::String const&) in juce_audio_processors.o void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IEditController>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IEditController>&, juce::String const&) in juce_audio_processors.o juce::VST3Classes::VST3PluginInstance::createMemoryStreamForState(juce::XmlElement&, juce::StringRef) in juce_audio_processors.o juce::VST3Classes::VST3PluginInstance::synchroniseStates() in juce_audio_processors.o "Steinberg::MemoryStream::~MemoryStream()", referenced from: void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IComponent>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IComponent>&, juce::String const&) in juce_audio_processors.o void juce::VST3Classes::VST3PluginInstance::appendStateFrom<Steinberg::Vst::IEditController>(juce::XmlElement&, juce::ComSmartPtr<Steinberg::Vst::IEditController>&, juce::String const&) in juce_audio_processors.o juce::VST3Classes::VST3PluginInstance::synchroniseStates() in juce_audio_processors.o "Steinberg::IPluginFactory2::iid", referenced from: juce::ComSmartPtr<Steinberg::IPluginFactory2>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::IPluginFactory3::iid", referenced from: juce::ComSmartPtr<Steinberg::IPluginFactory3>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::ConstStringTable::instance()", referenced from: ___cxx_global_var_init127 in juce_audio_processors.o ___cxx_global_var_init128 in juce_audio_processors.o "Steinberg::Vst::IComponent::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IComponent>::loadFrom(Steinberg::IPluginFactory*, char const (&) [16]) in juce_audio_processors.o "Steinberg::Vst::IUnitHandler::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o "Steinberg::Vst::IAttributeList::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o juce::VST3Classes::VST3HostContext::createInstance(char*, char*, void**) in juce_audio_processors.o "Steinberg::Vst::IAudioProcessor::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IAudioProcessor>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IEditController::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IEditController>::loadFrom(Steinberg::IPluginFactory*, char const (&) [16]) in juce_audio_processors.o juce::ComSmartPtr<Steinberg::Vst::IEditController>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IConnectionPoint::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IConnectionPoint>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IEditController2::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IEditController2>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IHostApplication::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o "Steinberg::Vst::IProgramListData::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IProgramListData>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IComponentHandler::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o juce::ComSmartPtr<Steinberg::Vst::IComponentHandler>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IComponentHandler2::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o juce::ComSmartPtr<Steinberg::Vst::IComponentHandler2>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IComponentHandler3::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o "Steinberg::Vst::IContextMenuTarget::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o "Steinberg::Vst::IMessage::iid", referenced from: juce::VST3Classes::VST3HostContext::createInstance(char*, char*, void**) in juce_audio_processors.o "Steinberg::Vst::IUnitData::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IUnitData>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::Vst::IUnitInfo::iid", referenced from: juce::ComSmartPtr<Steinberg::Vst::IUnitInfo>::loadFrom(Steinberg::FUnknown*) in juce_audio_processors.o "Steinberg::FUID::FUID(char const*)", referenced from: juce::VST3Classes::VST3PluginInstance::fetchComponentAndController(Steinberg::IPluginFactory*, int) in juce_audio_processors.o "Steinberg::FUID::~FUID()", referenced from: juce::VST3Classes::VST3PluginInstance::fetchComponentAndController(Steinberg::IPluginFactory*, int) in juce_audio_processors.o "Steinberg::String::String(char const*, int, bool)", referenced from: juce::VST3Classes::VST3HostContext::getName(unsigned short*) in juce_audio_processors.o juce::VST3Classes::VST3HostContext::AttributeList::getString(char const*, unsigned short*, unsigned int) in juce_audio_processors.o "Steinberg::String::~String()", referenced from: juce::VST3Classes::VST3HostContext::getName(unsigned short*) in juce_audio_processors.o juce::VST3Classes::VST3HostContext::AttributeList::getString(char const*, unsigned short*, unsigned int) in juce_audio_processors.o "Steinberg::FUnknown::iid", referenced from: juce::VST3Classes::VST3HostContext::queryInterface(char const*, void**) in juce_audio_processors.o "Steinberg::IPlugView::iid", referenced from: juce::VST3Classes::VST3PluginInstance::tryCreatingView() const in juce_audio_processors.o "Steinberg::ConstString::copyTo(unsigned short*, unsigned int, int) const", referenced from: juce::VST3Classes::VST3HostContext::getName(unsigned short*) in juce_audio_processors.o juce::VST3Classes::VST3HostContext::AttributeList::getString(char const*, unsigned short*, unsigned int) in juce_audio_processors.o "Steinberg::ConstStringTable::getString(char const*) const", referenced from: ___cxx_global_var_init127 in juce_audio_processors.o ___cxx_global_var_init128 in juce_audio_processors.o "Steinberg::FUID::isValid() const", referenced from: juce::VST3Classes::VST3PluginInstance::fetchComponentAndController(Steinberg::IPluginFactory*, int) in juce_audio_processors.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)


#5

Actually the problem happens too when i just check the VST3 checkbox, i get the same errors. the SDK is there, i even updated it, i also tried using a non whitespace path and nothing, VST3 is broken. any ideas?

thanks in advance


#6

Maybe have a look on the revision of the VST SDK. It could be that you are using an old version the juce team didn’t check… FYI on my system it builds fine (Mac OSX 10.10, Xcode 7.2, Juce 4.2 latest tip, VST SDK 3.6.5), with old projects when removing the post build script as well as for new generated projects.
As you don’t like changes, it might be the place to check… SCNR
Good luck
EDIT: sorry, just reading that you updated it already…


#7

OK, we obviously checked that VST3 compiles, so that could be a bug.

What plug-in are you compiling exactly? Can you reproduce the problem with the JUCE audio plug-in demo without further modifications? Can you try to re-download the VST3 SDK, maybe something is broken there?

Also: What Xcode version? What OS X SDK version? What OS X Deployment target? What VST3 SDK version? (I tested it with Version 3.6.5 and it works just fine). Do you compile with C++11 or C++98?


JUCE not finding VST files that are there