Download

Including module as dependency doesn't seem to actually link to module?

I have two plugins I have written. PluginA and PluginB. PluginB needs to use PluginA, so I set PluginA as a dependency in the build file for PluginB. This works fine for compilation, and appears to work. For example I can include the header files properly, which I can’t do if I don’t declare the dependency.

However it doesn’t seem to actually link to the required library, because I get unresolved symbols for calls into PluginA.

What additional step do I need to do for the Unreal Build System to properly link to the required plugin?

This is really driving me nuts. I’ve spent the whole day trying to figure out how to use essentially static link one plugin with another. Why does the Unreal build system have to be so confusing and worse, undocumented?

Ok so part of the problem here is I am apparently getting confusing a few different concepts here. I said modules, which is of course correct but what I did nto say, which is I think the real root of my confusion is that these modules are in two separate plugins.

So multiple plugins, each plugin containing one or more modules. We have some functionality that is needed by multiple plugins so the idea was to pull that functionality out into its own plugin, and then simply link to that plugin from all the others that need to use it. It is this link that I can’t seem to figure out.

Problem solved. Turned out to be a stupidly simple thing that I was just overlooking.

The issue was that by default the code generated by the Plugin Wizard does NOT declare classes with the BLAHBLAH_API macro, so nothing was getting exported. I just needed to add that and now all good!

I wouldn’t use Plugin wizards; I like to have control over everything when building this kind of project and also helps a lot to understand how things are loaded and run. Using wizards may to deprive you from understanding how everything really works.

Also, you say it works now, but keep in mind that a Plugin that is a base for other systems should be loaded as PreDefault, just in case if you’re not doing it that way already.

Already doing PreDefault and changed the module type, and yeah I have learned a lot of how plugins work in the last few weeks. It seems to be the dark side of UE4 where there is little documentation and less help :slight_smile:

The wizards are just convenient to get up and running quickly though.