NotImplementedException: Plugins are not implemented on platform

Unity version: 2021.3.45f1
FMOD For Unity: 2.02.26
SWITCH SDK: 17.5.3

When I run the build on the Switch DevKit, I get the following exception. Is there a way to fix it?

Error log
NotImplementedException: Plugins are not implemented on platform dc6af03a6d487a943bd07c6a5a1aafcc
at FMODUnity.Platform.GetPluginPath (System.String pluginName) [0x00011] in D:\Ikina\Origin\Assets\Plugins\FMOD\src\Platform.cs:510
at FMODUnity.Platform.LoadDynamicPlugins (FMOD.System coreSystem, System.Action2[T1,T2] reportResult) [0x00037] in D:\Ikina\Origin\Assets\Plugins\FMOD\src\Platform.cs:537 at FMODUnity.Platform.LoadPlugins (FMOD.System coreSystem, System.Action2[T1,T2] reportResult) [0x00004] in D:\Ikina\Origin\Assets\Plugins\FMOD\src\Platform.cs:516
at FMODUnity.RuntimeManager.Initialize () [0x00419] in D:\Ikina\Origin\Assets\Plugins\FMOD\src\RuntimeManager.cs:405
at FMODUnity.RuntimeManager.get_Instance () [0x000bb] in D:\Ikina\Origin\Assets\Plugins\FMOD\src\RuntimeManager.cs:207
at FMODUnity.RuntimeManager.get_StudioSystem () [0x00001] in D:\Ikina\Origin\Assets\Plugins\FMOD\src\RuntimeManager.cs:225
at FMODUnity.StudioListener.AddListener (FMODUnity.StudioListener listener) [0x00066] in D:\Ikina\Origin\Assets\Plugins\FMOD\src\StudioListener.cs:91
at FMODUnity.StudioListener.OnEnable () [0x0009c] in D:\Ikina\Origin\Assets\Plugins\FMOD\src\StudioListener.cs:121
Rethrow as SystemNotInitializedException: [FMOD] Initialization failed
at FMODUnity.RuntimeManager.get_Instance () [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.SetListenerLocation (System.Int32 listenerIndex, UnityEngine.GameObject gameObject, UnityEngine.GameObject attenuationObject) [0x0003c] in D:\Ikina\Origin\Assets\Plugins\FMOD\src\RuntimeManager.cs:1412
at FMODUnity.StudioListener.Update () [0x0011a] in D:\Ikina\Origin\Assets\Plugins\FMOD\src\StudioListener.cs:170

The error indicates that the target platform likely hasn’t been set up in FMOD for Unity’s settings. You can create Switch-specific platform settings and link static plugins built for the Switch in FMOD → Edit Settings → Platform Specific.

The settings mentioned in the message have already been configured. Please let me know if there’s anything else I should check or adjust.

Thanks for providing that screenshot.

Switch only supports static plugins, not dynamic, so I’d recommend ensuring that your plugins are build as static libs, and are added to the “Static Plugins” list instead of the “Dynamic Plugins” list. You can read more about linking static plugins in the Static Plugins section of the FMOD for Unity docs.

"Thank you for your response. As per your guidance, I referred to the manual and configured the static plugins. I’m sharing a screenshot of the setup.

However, after building, I encountered the following error. Is there anything additional I need to address?"
switch_error.txt (3.1 KB)

From what I can see in that file, the error is completely unrelated to FMOD, so unfortunately I can’t be of any help.

Thank you for your response. May I share a new error log with you to see if it provides more insight?
[FMOD] switch error_20250113.txt (23.8 KB)

Also, regarding the tutorial section:

9.2 Static Plugins
FMOD for Unity supports loading static plugins when running on the IL2CPP scripting backend. This is the only way to load plugins on platforms that don’t support dynamic libraries (such as iOS, tvOS, and Nintendo Switch).

The Static Plugins list in the FMOD for Unity settings specifies which static plugins to load at initialization time. Add the name of the plugin’s _GetDSPDescription function or functions (for example, FMOD_ResonanceAudioSource_GetDSPDescription, FMOD_ResonanceAudioSoundfield_GetDSPDescription, and FMOD_ResonanceAudioListener_GetDSPDescription), and FMOD will generate C# code to load the plugin.

While this explains static plugins, I couldn’t find details on how to create them. Could you please provide guidance on how to do this?

Thanks for the additional log, that’s definitely an error with the plugins. Unfortunately I haven’t been able to reproduce the issue on my end with the versions of FMOD/Unity/Switch SDK that you listed. Can I get you to confirm that libresonanceaudio.a is located at ./Assets/Plugins/FMOD/platforms/switch/lib/, and that it’s included on the Switch platform in the Inspector when you select it in Unity’s browser?

To create plugins for FMOD, you can use the FMOD Plugin API. A number of the projects included with the Core API examples, such as fmod_gain, fmod_distance_filter etc. should serve as demonstrations of how to use the Plugin API.

As for actually building a plugin to a static library, it may depend on your IDE but generally you’ll want to change the configuration of the project - for example, in Visual Studio you can set a project to build to a static lib by opening the project properties, and changing Configuration Properties → General → Configuation Type to “Static Library (.lib)”.

I’ve confirmed that libresonanceaudio.a is located at ./Assets/Plugins/FMOD/platforms/switch/lib/ and is included on the Switch platform in Unity’s Inspector as required.


However, regarding static plugin creation, I couldn’t locate the Core API examples you mentioned, such as fmod_gain or fmod_distance_filter. Could you guide me on where to find these examples so I can reference them for creating a static plugin?

Additionally, I followed the static plugin setup described at this FMOD documentation page, and after configuring it as instructed, the exceptions during the build disappeared. Interestingly, I didn’t create any static plugins but simply added the function names. Is this behavior normal, or is there something I might have overlooked?

Thanks

Just to confirm: have the exceptions that were present in the log you posted above been resolved by doing this?

But yes, for static plugins, the _GetDSPDescription function names must be added in order to have FMOD load the plugins properly at runtime.

The Core API examples can be found at ./api/core/examples in the FMOD Engine. The vs2017 and vs2019 folders in that directory contain Visual Studio solutions for the examples, and you can set each individual project in the solution as the startup project to build and/or run that specific example.