How to customize nodes Movie Render Graph Config in C++?

This unfortunately looks like an oversight on our part. The base class is has the C++ class exported, but not the inherited classes, meaning they can’t be linked to from other modules.

I can’t think of a great work around, without editing the engine source code to add MOVIERENDERPIPELINERENDERPASSES_API to UMovieGraphImageSequenceOutputNode_JPG, ie:

class MOVIERENDERPIPELINERENDERPASSES_API UMovieGraphImageSequenceOutputNode_JPG : public UMovieGraphImageSequenceOutputNode

If you’re not using a custom engine build, there’s a somewhat unusual possible solution here - copy the Movie Render Pipeline plugin from Engine/Plugins/MovieScene to MYGAME/Plugins, and leave the name the same. Make sure you delete the intermediate data (ie the built dlls) from the plugin folder. The engine should detect this as a plugin for your project and use the game’s version of it over the engine’s version, hopefully without breaking any existing content. You can then change the source code for the plugin locally in your project (to add the _API exports). This isn’t a common method so there may be some unforseen side effects of doing this, but I don’t expect them to result in any data loss in assets.

We’ll look at getting this fixed in the long term but it may be too late to fix it for 5.6 and we may have to wait until 5.7 before we can fix it in the engine.

As to why it works in Python: Python/Blueprints use a different mechanism for exposing things to them - they look for the presence of UCLASS(BlueprintType) somewhere in the hierarchy. This is all handled at runtime though (ie: the default objects are instantiated at runtime and then they register things into runtime reflection information, etc.), as opposed to the C++ version which relies on dllexport/dllimport (which the FOO_API macro is a wrapper for) and has to be handled at link time.