Trouble with update 5.3.1

Hello everyone,
I have just updated JUCE to 5.3.1 version and all of a sudden I got a lot of problems building my project. 72 to be exact. I have never experienced something like that and I have tried for hours to make it work but I had zero success. During compiling ,Visual studio 15 which I use, gets to this first:

e:\audioplug-ins\framework\juce\modules\juce_gui_basics\layout/juce_Grid.cpp(317): error 
C2059: syntax error: '}' (compiling source file 
..\..\JuceLibraryCode\include_juce_gui_basics.cpp)
1>e:\audioplug-ins\framework\juce\modules\juce_gui_basics\layout/juce_Grid.cpp(941): fatal 
error C1903: unable to recover from previous error(s); stopping compilation (compiling source 
file ..\..\JuceLibraryCode\include_juce_gui_basics.cpp)
1>  INTERNAL COMPILER ERROR in 'E:\Program Files (x86)\Microsoft Visual Studio 
14.0\VC\bin\x86_amd64\CL.exe'
1>      Please choose the Technical Support command on the Visual C++
1>      Help menu, or open the Technical Support help file for more information
1>cl : Command line error D8040: error creating or communicating with child process

After that it starts to build my vst and here all hell breaks loose :confused:

2>------ Build started: Project: DrPad_VST, Configuration: Debug x64 ------
2>  include_juce_audio_plugin_client_VST2.cpp
2>DrPad.lib(include_juce_core.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(include_juce_events.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(include_juce_events.obj) : error LNK2005: "public: bool __cdecl juce::Thread::threadShouldExit(void)const " (?threadShouldExit@Thread@juce@@QEBA_NXZ) already defined in DrPad.lib(include_juce_core.obj)
2>DrPad.lib(include_juce_gui_basics.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(include_juce_audio_basics.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(include_juce_audio_processors.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(include_juce_audio_plugin_client_utils.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(include_juce_gui_extra.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(include_juce_graphics.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(include_juce_data_structures.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(PluginProcessor.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(include_juce_audio_formats.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(CustomVoice.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(CustomSynth.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(Compressor.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(PadInfo.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(PluginEditor.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(Spectrum.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(Settings.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(TimeDomain.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>DrPad.lib(include_juce_dsp.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(ios.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(ios.obj) : error LNK2005: "public: static void __cdecl std::ios_base::_Addstd(class std::ios_base *)" (?_Addstd@ios_base@std@@SAXPEAV12@@Z) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(ios.obj) : error LNK2005: "private: static void __cdecl std::ios_base::_Ios_base_dtor(class std::ios_base *)" (?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(locale0.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(locale0.obj) : error LNK2005: "void __cdecl std::_Facet_Register(class std::_Facet_base *)" (?_Facet_Register@std@@YAXPEAV_Facet_base@1@@Z) already defined in msvcprtd.lib(locale0_implib.obj)
2>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Getgloballocale(void)" (?_Getgloballocale@locale@std@@CAPEAV_Locimp@12@XZ) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Init(bool)" (?_Init@locale@std@@CAPEAV_Locimp@12@_N@Z) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,char const *)" (?_Locinfo_ctor@_Locinfo@std@@SAXPEAV12@PEBD@Z) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl std::_Locinfo::_Locinfo_dtor(class std::_Locinfo *)" (?_Locinfo_dtor@_Locinfo@std@@SAXPEAV12@@Z) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(locale0.obj) : error LNK2005: "public: static class std::locale const & __cdecl std::locale::classic(void)" (?classic@locale@std@@SAAEBV12@XZ) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(iosptrs.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(locale.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(xlock.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __cdecl std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QEAA@H@Z) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(xlock.obj) : error LNK2005: "public: __cdecl std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QEAA@XZ) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(xthrow.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(xthrow.obj) : error LNK2005: "void __cdecl std::_Xbad_alloc(void)" (?_Xbad_alloc@std@@YAXXZ) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(xthrow.obj) : error LNK2005: "void __cdecl std::_Xbad_function_call(void)" (?_Xbad_function_call@std@@YAXXZ) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(xthrow.obj) : error LNK2005: "void __cdecl std::_Xlength_error(char const *)" (?_Xlength_error@std@@YAXPEBD@Z) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(xthrow.obj) : error LNK2005: "void __cdecl std::_Xout_of_range(char const *)" (?_Xout_of_range@std@@YAXPEBD@Z) already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(wlocale.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(xlocale.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(xdateord.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(xwctomb.obj) : error LNK2005: _Getcvt already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(xfdtest.obj) : error LNK2005: _FDtest already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(xdtest.obj) : error LNK2005: _Dtest already defined in msvcprtd.lib(MSVCP140D.dll)
2>libcpmtd.lib(winapisupp.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(StlCompareStringA.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(winapinls.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(StlCompareStringW.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(StlLCMapStringW.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>libcpmtd.lib(StlLCMapStringA.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in include_juce_audio_plugin_client_VST2.obj
2>     Creating library E:\AudioPlug-ins\DrPad\Builds\VisualStudio2015\x64\Debug\VST\DrPad.lib and object E:\AudioPlug-ins\DrPad\Builds\VisualStudio2015\x64\Debug\VST\DrPad.exp
2>LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library
2>include_juce_audio_plugin_client_VST2.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl juce::MessageManagerLock::~MessageManagerLock(void)" (??1MessageManagerLock@juce@@UEAA@XZ) referenced in function "private: __int64 __cdecl JuceVSTWrapper::handleCloseEditor(struct JuceVSTWrapper::VstOpCodeArguments)" (?handleCloseEditor@JuceVSTWrapper@@AEAA_JUVstOpCodeArguments@1@@Z)
2>DrPad.lib(include_juce_audio_processors.obj) : error LNK2001: unresolved external symbol "public: virtual __cdecl juce::MessageManagerLock::~MessageManagerLock(void)" (??1MessageManagerLock@juce@@UEAA@XZ)
2>DrPad.lib(include_juce_gui_basics.obj) : error LNK2019: unresolved external symbol "public: class juce::URL & __cdecl juce::URL::operator=(class juce::URL const &)" (??4URL@juce@@QEAAAEAV01@AEBV01@@Z) referenced in function "public: void __cdecl juce::HyperlinkButton::setURL(class juce::URL const &)" (?setURL@HyperlinkButton@juce@@QEAAXAEBVURL@2@@Z)
2>DrPad.lib(include_juce_gui_basics.obj) : error LNK2001: unresolved external symbol "public: static class juce::String const juce::File::separatorString" (?separatorString@File@juce@@2VString@2@B)
2>DrPad.lib(include_juce_audio_processors.obj) : error LNK2019: unresolved external symbol "public: class juce::Value __cdecl juce::ValueTree::getPropertyAsValue(class juce::Identifier const &,class juce::UndoManager *,bool)" (?getPropertyAsValue@ValueTree@juce@@QEAA?AVValue@2@AEBVIdentifier@2@PEAVUndoManager@2@_N@Z) referenced in function "public: class juce::Value __cdecl juce::AudioProcessorValueTreeState::getParameterAsValue(class juce::StringRef)const " (?getParameterAsValue@AudioProcessorValueTreeState@juce@@QEBA?AVValue@2@VStringRef@2@@Z)
2>DrPad.lib(include_juce_audio_processors.obj) : error LNK2019: unresolved external symbol "public: void __cdecl juce::ValueTree::appendChild(class juce::ValueTree const &,class juce::UndoManager *)" (?appendChild@ValueTree@juce@@QEAAXAEBV12@PEAVUndoManager@2@@Z) referenced in function "private: class juce::ValueTree __cdecl juce::AudioProcessorValueTreeState::getOrCreateChildValueTree(class juce::String const &)" (?getOrCreateChildValueTree@AudioProcessorValueTreeState@juce@@AEAA?AVValueTree@2@AEBVString@2@@Z)
2>DrPad.lib(include_juce_audio_processors.obj) : error LNK2001: unresolved external symbol "public: virtual void __cdecl juce::ComponentListener::componentEnablementChanged(class juce::Component &)" (?componentEnablementChanged@ComponentListener@juce@@UEAAXAEAVComponent@2@@Z)
2>DrPad.lib(include_juce_audio_processors.obj) : error LNK2019: unresolved external symbol "public: void __cdecl juce::Slider::setNormalisableRange(class juce::NormalisableRange<double>)" (?setNormalisableRange@Slider@juce@@QEAAXV?$NormalisableRange@N@2@@Z) referenced in function "public: __cdecl juce::AudioProcessorValueTreeState::SliderAttachment::Pimpl::Pimpl(class juce::AudioProcessorValueTreeState &,class juce::String const &,class juce::Slider &)" (??0Pimpl@SliderAttachment@AudioProcessorValueTreeState@juce@@QEAA@AEAV23@AEBVString@3@AEAVSlider@3@@Z)
2>E:\AudioPlug-ins\DrPad\Builds\VisualStudio2015\x64\Debug\VST\\DrPad.dll : fatal error LNK1120: 7 unresolved externals
========== Build: 0 succeeded, 2 failed, 0 up-to-date, 0 skipped ==========

What happened here? If you need more details about my project settings and debugging I will gladly share.

Thanks in advance,
Cila

Looks like the same issue as this post. Can you try the steps listed in there?

I have just tried that now without success. Instead of all errors from before, now I only have:

Severity Code Description Project File Line
Error LNK1104 cannot open file ‘DrPad.lib’ DrPad_VST E:\AudioPlug-ins\DrPad\Builds\VisualStudio2015\LINK 1

And the wierd syntax error from juce_gui_basics is still there.

Have you cleaned the project in Visual Studio and rebuilt?

Yes, I have done Clean solution ,and then rebuild solution. I have tried any combination with these 3,clean build rebuild options :frowning:

Are you trying to link to a 3rd party lib?

As for the syntax error in gui_basics, it’s a compiler error that seems to only occur in VS2015 where it expects braces around a jassert. I’ve pushed a fix that should be on develop shortly but you just need to add some braces at line 315 of juce_Grid.cpp like so:

if (strings.size() > 0)
{
    for (auto s : strings)
    {
        jassert (s.size() == strings[0].size()); // all rows must have the same number of columns
    }
}

Those magic braces sorted everything out. Now it works, thanks for helping, it was driving me crazy, I appreciate it. Cheers !

Great. The fix will be on develop in a moment once it passes our CI builds so you can pull it in instead of locally patching your JUCE.

1 Like