Steinberg and Microsoft Compiler error after upgrading JUCE to 7.0.7

I don’t use Projucer much, only when I add new files.

I think my previous version was 7.0.2.

After upgrading I now get the following error for my synth, which compiled without errors and worked fine before (this morning). I’m using Visual Studio 2022 64-bit current version;

Build started…
1>------ Build started: Project: Mutineer_SharedCode, Configuration: Debug x64 ------
1>include_juce_audio_plugin_client_utils.cpp
1>C:\Program Files\JUCE\modules\juce_audio_plugin_client\utility\juce_CreatePluginFilter.h(31,40): error C2084: function ‘std::unique_ptr<juce::AudioProcessor,std::default_deletejuce::AudioProcessor> juce::createPluginFilterOfType(juce::AudioProcessor::WrapperType)’ already has a body
1>C:\Program Files\JUCE\modules\juce_audio_plugin_client\detail\juce_CreatePluginFilter.h(31,40): message : see previous definition of ‘createPluginFilterOfType’
1>Done building project “Mutineer_SharedCode.vcxproj” – FAILED.
2>------ Build started: Project: Mutineer_VST3, Configuration: Debug x64 ------
2> Creating library C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3\Mutineer.lib and object C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3\Mutineer.exp
2>include_juce_audio_plugin_client_VST3.obj : error LNK2001: unresolved external symbol “public: virtual void __cdecl juce::Component::focusGainedWithDirection(enum juce::Component::FocusChangeType,enum juce::Component::FocusChangeDirection)” (?focusGainedWithDirection@Component@juce@@UEAAXW4FocusChangeType@12@W4FocusChangeDirection@12@@Z)
2>include_juce_audio_plugin_client_VST3.obj : error LNK2001: unresolved external symbol “public: virtual class std::unique_ptr<class juce::AccessibilityHandler,struct std::default_delete > __cdecl juce::Component::createAccessibilityHandler(void)” (?createAccessibilityHandler@Component@juce@@UEAA?AV?$unique_ptr@VAccessibilityHandler@juce@@U?$default_delete@VAccessibilityHandler@juce@@@std@@@std@@XZ)
2>include_juce_audio_plugin_client_VST3.obj : error LNK2019: unresolved external symbol “private: static class std::shared_ptr __cdecl juce::detail::WindowsHooks::getSingleton(void)” (?getSingleton@WindowsHooks@detail@juce@@CA?AV?$shared_ptr@VHooks@WindowsHooks@detail@juce@@@std@@XZ) referenced in function “public: __cdecl juce::detail::WindowsHooks::WindowsHooks(void)” (??0WindowsHooks@detail@juce@@QEAA@XZ)
2>C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3\Mutineer.dll : fatal error LNK1120: 3 unresolved externals
2>Done building project “Mutineer_VST3.vcxproj” – FAILED.
========== Build: 0 succeeded, 2 failed, 1 up-to-date, 0 skipped ==========
========== Build started at 12:21 PM and took 03.465 seconds ==========

Working my way back through the releases, using “Rebuild Solution”;

7.06 - Same issue
7.05 - Seemingly built ok, but when trying to run, lots of errors.
7.04 - As 7.05
7.03 - As 7.04, see below;
7.02 - Even with “Rebuild Solution” I get same “VST3_SDK” / Steinberg errors as in build 7.03! I needed to code this afternoon. Is there a version I can download that has not changed causing the errors below?

Rebuild started…
1>------ Rebuild All started: Project: Mutineer_VST3ManifestHelper, Configuration: Debug x64 ------
2>------ Rebuild All started: Project: Mutineer_SharedCode, Configuration: Debug x64 ------
1>juce_VST3ManifestHelper.cpp
2>CloneModule.cpp
2>DetailEffect.cpp
2>DetailEnvelope.cpp
2>DetailFilter.cpp
2>DetailLFO.cpp
2>DetailTGEngineAdditive.cpp
2>DetailTGEngineAnalogCurve.cpp
2>DetailTGEngineScrambler.cpp
2>DetailTGEngineSelection.cpp
2>DetailTGEngineSpiral.cpp
2>DetailTGEngineSplitwave.cpp
2>DetailTGEngineTranswave.cpp
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(329,44): error C2039: ‘wscast’: is not a member of ‘Steinberg’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\pluginterfaces\base\ipluginbase.h(22,11): message : see declaration of ‘Steinberg’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(329,44): error C3861: ‘wscast’: identifier not found
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(553,52): error C2039: ‘wscast’: is not a member of ‘Steinberg’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\pluginterfaces\base\ipluginbase.h(22,11): message : see declaration of ‘Steinberg’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(553,52): error C3861: ‘wscast’: identifier not found
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,25): error C3536: ‘appPath’: cannot be used before it is initialized
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): error C2665: ‘std::experimental::filesystem::v1::path::path’: no overloaded function could convert all the argument types
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\experimental\filesystem(787,5): message : could be ‘std::experimental::filesystem::v1::path::path(std::experimental::filesystem::v1::path &&) noexcept’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): message : ‘std::experimental::filesystem::v1::path::path(std::experimental::filesystem::v1::path &&) noexcept’: cannot convert argument 1 from ‘int’ to ‘std::experimental::filesystem::v1::path &&’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,25): message : Reason: cannot convert from ‘int’ to ‘std::experimental::filesystem::v1::path’
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\experimental\filesystem(733,5): message : or ‘std::experimental::filesystem::v1::path::path(const std::experimental::filesystem::v1::path &)’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): message : ‘std::experimental::filesystem::v1::path::path(const std::experimental::filesystem::v1::path &)’: cannot convert argument 1 from ‘int’ to ‘const std::experimental::filesystem::v1::path &’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,25): message : Reason: cannot convert from ‘int’ to ‘const std::experimental::filesystem::v1::path’
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\experimental\filesystem(731,5): message : or ‘std::experimental::filesystem::v1::path::path(void)’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): message : ‘std::experimental::filesystem::v1::path::path’: function does not take 1 arguments
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\experimental\filesystem(782,5): message : or ‘std::experimental::filesystem::v1::path::path(const std::basic_string<_Elem,_Traits,_Alloc> &,const std::locale &)’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): message : ‘std::experimental::filesystem::v1::path::path(const std::basic_string<_Elem,_Traits,_Alloc> &,const std::locale &)’: expects 2 arguments - 1 provided
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\experimental\filesystem(770,5): message : or ‘std::experimental::filesystem::v1::path::path(_InIt,const std::locale &)’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): message : ‘std::experimental::filesystem::v1::path::path(_InIt,const std::locale &)’: expects 2 arguments - 1 provided
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\experimental\filesystem(762,5): message : or ‘std::experimental::filesystem::v1::path::path(_InIt,_InIt,const std::locale &)’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): message : ‘std::experimental::filesystem::v1::path::path(_InIt,_InIt,const std::locale &)’: expects 3 arguments - 1 provided
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\experimental\filesystem(756,5): message : or ‘std::experimental::filesystem::v1::path::path(const std::basic_string<_Elem,_Traits,_Alloc> &)’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): message : ‘std::experimental::filesystem::v1::path::path(const std::basic_string<_Elem,_Traits,_Alloc> &)’: could not deduce template argument for ‘const std::basic_string<_Elem,_Traits,_Alloc> &’ from ‘int’
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\experimental\filesystem(744,5): message : or ‘std::experimental::filesystem::v1::path::path(_InIt)’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): message : ‘std::experimental::filesystem::v1::path::path(_InIt)’: could not deduce template argument for ‘__formal’
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include\experimental\filesystem(736,5): message : or ‘std::experimental::filesystem::v1::path::path(_InIt,_InIt)’
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): message : ‘std::experimental::filesystem::v1::path::path(_InIt,_InIt)’: expects 2 arguments - 1 provided
1>C:\Program Files\JUCE\modules\juce_audio_processors\format_types\VST3_SDK\public.sdk\source\vst\hosting\module_win32.cpp(554,24): message : while trying to match the argument list ‘(int)’
1>Done building project “Mutineer_VST3ManifestHelper.vcxproj” – FAILED.
2>DetailTGEngineWaveLimit.cpp
2>DetailTGEngineWaveMixTable.cpp
2>DetailTGEngineWaveMorpher.cpp
2>DetailTGEngineWavetable.cpp
2>DetailToneGenerator.cpp
2>GlobalSettings.cpp
2>globalVars.cpp
2>LFOClass.cpp
2>LFOWaveforms.cpp
2>ModuleEffect.cpp
2>ModuleEnvelopeSpecifics.cpp
2>PluginEditor.cpp
2>PluginProcessor.cpp
2>ProcessFunctions.cpp
2>Randomize.cpp
2>SetModifierTarget.cpp
2>StripEffects.cpp
2>StripEnvelopes.cpp
2>StripFilters.cpp
2>StripLFOs.cpp
2>StripToneGenerators.cpp
2>WaveformCreator.cpp
2>WaveformOutput.cpp
2>WavetableImport.cpp
2>BinaryData.cpp
2>include_juce_audio_basics.cpp
2>include_juce_audio_devices.cpp
2>include_juce_audio_formats.cpp
2>include_juce_audio_plugin_client_ARA.cpp
2>include_juce_audio_plugin_client_RTAS_1.cpp
2>include_juce_audio_plugin_client_RTAS_2.cpp
2>include_juce_audio_plugin_client_RTAS_3.cpp
2>include_juce_audio_plugin_client_RTAS_4.cpp
2>include_juce_audio_plugin_client_RTAS_utils.cpp
2>include_juce_audio_plugin_client_utils.cpp
2>include_juce_audio_processors_ara.cpp
2>include_juce_audio_processors_lv2_libs.cpp
2>include_juce_audio_utils.cpp
2>include_juce_core.cpp
2>include_juce_data_structures.cpp
2>include_juce_dsp.cpp
2>include_juce_events.cpp
2>include_juce_graphics.cpp
2>include_juce_gui_extra.cpp
2>include_juce_audio_processors.cpp
2>include_juce_gui_basics.cpp
2>Mutineer_SharedCode.vcxproj → C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\Shared Code\Mutineer.lib
3>------ Rebuild All started: Project: Mutineer_VST3, Configuration: Debug x64 ------
3>include_juce_audio_plugin_client_VST3.cpp
3> Creating library C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3\Mutineer.lib and object C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3\Mutineer.exp
3>Mutineer_VST3.vcxproj → C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3\Mutineer.dll
3> 1 file(s) copied.
3>Could Not Find C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3\Mutineer.vst3\Contents\moduleinfo.json
3>‘“C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3 Manifest Helper\juce_vst3_helper.exe”’ is not recognized as an internal or external command,
3>operable program or batch file.
3>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(161,5): error MSB3073: The command "copy /Y “C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3\Mutineer.dll” “C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3\Mutineer.vst3\Contents\x86_64-win\Mutineer.vst3”
3>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(161,5): error MSB3073: del /s /q “C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3/Mutineer.vst3\Contents\moduleinfo.json”
3>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(161,5): error MSB3073: if not exist “C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3/Mutineer.vst3\Contents\Resources" del /s /q “C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3/Mutineer.vst3\Contents\Resources” && mkdir “C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3/Mutineer.vst3\Contents\Resources”
3>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(161,5): error MSB3073: “C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3 Manifest Helper\juce_vst3_helper.exe” -create -version “1.0.0” -path “C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3/Mutineer.vst3” -output “C:\Users\dkdiv\Documents\JUCE\Mutineer\Builds\VisualStudio2022\x64\Debug\VST3/Mutineer.vst3\Contents\Resources\moduleinfo.json”
3>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(161,5): error MSB3073: :VCEnd” exited with code 9009.
3>Done building project “Mutineer_VST3.vcxproj” – FAILED.
========== Rebuild All: 1 succeeded, 2 failed, 0 skipped ==========
========== Rebuild started at 12:49 PM and took 01:13.091 minutes ==========

Can’t get past the “VST3_SDK” errors even trying release 6.1.6 and 6.0.

Can anyone please tell me what release contains the previous (older), but in my project working “VST3_SDK” files?

Fortunately for me I was able to copy my working JUCE folder from a spare Laptop, which I last used in May 2023.

The version I actually had was 7.0.5, and it “Rebuild Solution” complies without errors. So I assume something happened in version 7.0.6 or 7.07 that caused the VST3_SDK file errors.

1 Like

Be sure you are on the appropriate branch, if you’re using git … the develop branch can often be a bit thorny.

When switching JUCE versions, it’s vital that you resave the project using a copy of the Projucer that matches the JUCE version.

In practice, this means that after updating to a new version of JUCE, you must rebuild the Projucer using the project files included with the updated copy of JUCE, and then use that Projucer to resave your project.

I think its good practice to create a script, which automatically rebuilds projucer and resaves all *.jucer projects within your repository automatically via projucer with “–resave” option.

I’m not using git, thanks though

Ok Saving the project I will do, but what exactly do you mean by “rebuild the Projucer”? I do not see a rebuild option in Projucer.

In extras/Projucer/Builds you can find project files to build the Projucer itself.

++ seems, same. Problems with VST after upgrade from 7.05 to 7.07 and 7.08
Most strange, is that the one .jucer file is generating project , which have errors during compilation, but another .jucer file with slightly different options (plugin name / manufacturer code, etc) , with the same source folder as above, make project which compiling fine.

I am using git, but don’t have a “clear” commit before and after migrate from 7.05 to 7.08.

I have never thought of that. I have always just used the Projucer.exe provided in the JUCE folder as part of the release download. Maybe the rebuilding instructions only really applies if I’m using GitHub instead of the all-inclusive downloads.

Hm, I found this in my .juce file
<JUCERPROJECT …
headerPath=“…/…/asio/common** **”>
but it was not the problem, but problem was a local copy of “processor”. Don’t know how it became ‘local’

Hi I am using CMake with the following package declaration

include(cmake/cpm.cmake)

CPMAddPackage(
    NAME JUCE
    GIT_TAG 7.0.5
    VERSION 7.0.5
    GITHUB_REPOSITORY juce-framework/JUCE
    SOURCE_DIR ${LIB_DIR}/juce
)

7.0.5 works as it should but I get warnings and cannot compile VST3 when I remove my build folder and lib/juce folder, and

cmake -S . -B build
cmake --build build

defining a higher JUCE version e.g. 7.0.6 … 7.0.9 :slight_smile:

Is it possible to upgrade this way ? :slight_smile:
Best, Lasse