Compiling plugin in 4.16 causes unresolved external symbol linker error


I’m trying to convert my project to 4.16 and I managed to get all compiler errors solved.
However I’m really struggling with this linker error and would really appreciate if anyone could point me in the right direction.

Here is the error:

From what I understood of the problem, the linker can’t find the definition of the struct FInteriorSettings in the FMODAudioComponent.cpp and FMODStudioModule.cpp files.

In those files, an FInteriorSettings is instantiated like this: FInteriorSettings Ambient;.
There’s a prototype of the struct (struct FInteriorSettings;) in the FMODStudioModule.h file.

The struct is declared in the RunTime/Engine/Classes/Sound/AudioVolume.h file.

Did the library linking system change in a way that requires me do to something else to get this working? What could be going wrong?

Dan Zaidan

That struct isn’t exported (it’s not tagged with ENGINE_API), and it doesn’t looked like that was changed recently so I’m shocked you’ve been able to use code that relies on it without modifying the engine and adding that tag (which would be the fix).

I had the same problem.
Here’s the solution.

Thanks for the link!


It worked fine and the Editor ran the game with the plugin as expected.

However, when I try to build the Shipping version (of Win64) the linker complains that “one more more multiply defined symbols found”!

Did you have a similar problem?


How am I suppose to solve linker error in Unreal? It is somewhere in the plugin module definition?

We have had to bypassed this by using our own “InteriorSettings” struct because the FInteriorSettings definition isn’t linked when compiling for editor but it is when building/packaging to a game.