Developer Notes

This is not a bug. UFactory is an editor only class so you cannot put it in runtime code (code that doesnt depend on the editor). Development configuration is a non-editor configuration. It is left up to the user to put the factory subclass in editor only code.

Description

Adding a new custom UFactory code class to a project results in no longer being able to build the project for the Development configuration. Prior to adding the UFactory code class the project can be built for the Development configuration, but after adding the UFactory code class a Development build of the project will always fail, even if the UFactory code class is removed from the project.

Steps to Reproduce
  1. Create a new Basic Code project.
  2. Add a new UFactory code class to the project.
  3. Build the project for the Development configuration in Visual Studio.

RESULT:
The build fails with numerous build errors in Engine code, such as:

D:\Main-Builds\Stream\Engine\Source\Developer\iOS\IOSPlatformEditor\Private\IOSPlatformEditorModule.cpp(37): error C2065: 'FOnUpdateMaterialShaderQuality': undeclared identifier
D:\Main-Builds\Stream\Engine\Source\Developer\iOS\IOSPlatformEditor\Private\IOSPlatformEditorModule.cpp(37): error C2146: syntax error: missing ';' before identifier 'UpdateMaterials'
D:\Main-Builds\Stream\Engine\Source\Developer\iOS\IOSPlatformEditor\Private\IOSPlatformEditorModule.cpp(37): error C2065: 'UpdateMaterials': undeclared identifier
D:\Main-Builds\Stream\Engine\Source\Developer\iOS\IOSPlatformEditor\Private\IOSPlatformEditorModule.cpp(37): error C2653: 'FOnUpdateMaterialShaderQuality': is not a class or namespace name
D:\Main-Builds\Stream\Engine\Source\Developer\iOS\IOSPlatformEditor\Private\IOSPlatformEditorModule.cpp(37): error C3861: 'CreateLambda': identifier not found
D:\Main-Builds\Stream\Engine\Source\Developer\iOS\IOSPlatformEditor\Private\IOSPlatformEditorModule.cpp(47): error C2653: 'FMaterialShaderQualitySettingsCustomization': is not a class or namespace name
D:\Main-Builds\Stream\Engine\Source\Developer\iOS\IOSPlatformEditor\Private\IOSPlatformEditorModule.cpp(47): error C2065: 'MakeInstance': undeclared identifier
D:\Main-Builds\Stream\Engine\Source\Developer\iOS\IOSPlatformEditor\Private\IOSPlatformEditorModule.cpp(47): error C2065: 'UpdateMaterials': undeclared identifier
D:\Main-Builds\Stream\Engine\Source\Developer\iOS\IOSPlatformEditor\Private\IOSPlatformEditorModule.cpp(45): error C2660: 'FPropertyEditorModule::RegisterCustomClassLayout': function does not take 1 arguments
D:\Main-Builds\Stream\Engine\Source\Developer\iOS\IOSPlatformEditor\Private\IOSTargetSettingsCustomization.cpp(1743): error C2039: 'HasMetaData': is not a member of 'UEnum'
D:\Main-Builds\Stream\Engine\Source\Runtime\CoreUObject\Public\UObject/EnumProperty.h(9): note: see declaration of 'UEnum'

EXPECTED:
The build completes successfully.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-57727 in the post.

3
Login to Vote

Non-Issue
ComponentTools
Affects Versions4.17.24.18.34.20
CreatedApr 13, 2018
ResolvedApr 17, 2018
UpdatedSep 16, 2019