Description

In the UHT boilerplate that's generated for the FGUseableInterface type, there is a pure virtual declaration that's emitted for the BlueprintNativeEvent's required _Implementation() method:

#define UDNTest_Source_UDNTest_FGUsableInterface_h_7_RPC_WRAPPERS \
	virtual bool IsUseable_Implementation() const=0; \
#define UDNTest_Source_UDNTest_FGUsableInterface_h_7_RPC_WRAPPERS_NO_PURE_DECLS \
    	virtual bool IsUseable_Implementation() const=0; \
Steps to Reproduce
  1. Create a blank C++ project
  2. Add a the attached .h and .cpp files to the Source folder.
  3. Compile in Visual C++ and open project in editor
  4. Go to Settings > Project Settings > Packaging and set Blueprint Nativization Method to "Exclusive"
  5. Make an actor class in blueprint called BP_Usable
  6. Let it implement FGUsableInterface
  7. In Class Settings, check the "Nativize" box.
  8. Compile and save the Blueprint, then close the Blueprint editor
  9. Choose File->Package Project->Windows->Win64 and wait for completion. An error should result:

UATHelper: Packaging (Windows (64-bit)): LogInit: Display: LogBlueprintCodeGen: Error: BP /Game/BP_Usable.BP_Usable is selected for nativization, but it cannot be nativized because it currently implements an interface class (/Script/UDNTest.FGUseableInterface) that declares one or more pure virtual functions.

Have Comments or More Details?

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

25
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint
Affects Versions4.174.18
Target Fix4.20
Fix Commit4020341
Main Commit4058964
Release Commit4095966
CreatedNov 14, 2017
ResolvedApr 20, 2018
UpdatedMay 31, 2018