Creating a C++ module.

I’m working on multiple games and I have some code I want to share between the two games in the form of a module.

I followed these instructions: Gameplay Modules | Unreal Engine Documentation

Right now I’m getting these errors. It seems to think the module files are part of my game module as well.



1>------ Build started: Project: ShaderCompileWorker, Configuration: Development_Program x64 ------
1>  Target is up to date
2>------ Build started: Project: MinigunSimulator, Configuration: Development_Editor x64 ------
2>  Creating makefile for MinigunSimulatorEditor (no existing makefile)
2>  Performing full C++ include scan (no include cache file)
2>  Building UnrealHeaderTool...
2>  Target is up to date
2>  Parsing headers for MinigunSimulatorEditor
2>    Running UnrealHeaderTool "F:\Code\UnrealEngineProj\MinigunSimulator\MinigunSimulator.uproject" "F:\Code\UnrealEngineProj\MinigunSimulator\Intermediate\Build\Win64\MinigunSimulatorEditor\Development\MinigunSimulatorEditor.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors
2>LogCompile : error : Duplicate class name: AAEBlankActor also exists in file /Script/AEFramework
2>LogCompile : error : Duplicate class name: AAEGameMode also exists in file /Script/AEFramework
2>LogCompile : error : Duplicate class name: UAEGameplayStatics also exists in file /Script/AEFramework
2>LogCompile : error : Duplicate class name: AAEPhysicalActor also exists in file /Script/AEFramework
2>LogCompile : error : Duplicate class name: AAEPlayerCameraManager also exists in file /Script/AEFramework
2>LogCompile : error : Duplicate class name: AAEPlayerController also exists in file /Script/AEFramework
2>LogCompile : error : Duplicate class name: UAEResetInterface also exists in file /Script/AEFramework
2>LogCompile : error : Duplicate class name: UAEState also exists in file /Script/AEFramework
2>LogCompile : error : Duplicate class name: UAEStateManager also exists in file /Script/AEFramework
2>LogCompile : error : Duplicate class name: UAnimGraphNode_CopyBoneFromSceneComponent also exists in file /Script/AEFramework
2>LogCompile : error : Duplicate class name: UCameraModifier_RelativeOffset also exists in file /Script/AEFramework
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEBlankActor.h(6) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEBlankActor or Class /Script/MinigunSimulator.AEBlankActor
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEGameMode.h(6) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEGameMode or Class /Script/MinigunSimulator.AEGameMode
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEGameplayStatics.h(131) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEGameplayStatics or Class /Script/MinigunSimulator.AEGameplayStatics
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEPhysicalActor.h(6) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEPhysicalActor or Class /Script/MinigunSimulator.AEPhysicalActor
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEPlayerCameraManager.h(7) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEPlayerCameraManager or Class /Script/MinigunSimulator.AEPlayerCameraManager
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEPlayerCameraManager.h(45) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.CameraModifier_RelativeOffset or Class /Script/MinigunSimulator.CameraModifier_RelativeOffset
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEPlayerController.h(6) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEPlayerController or Class /Script/MinigunSimulator.AEPlayerController
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEResetInterface.h(7) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEResetInterface or Class /Script/MinigunSimulator.AEResetInterface
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEResetInterface.h(12) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEResetInterface or Class /Script/MinigunSimulator.AEResetInterface
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEResetInterface.h(13) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEResetInterface or Class /Script/MinigunSimulator.AEResetInterface
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEState.h(5) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEStateManager or Class /Script/MinigunSimulator.AEStateManager
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEState.h(8) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEState.h(9) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEStateManager or Class /Script/MinigunSimulator.AEStateManager
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEState.h(22) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEState.h(38) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEState.h(44) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEState.h(50) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(6) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(9) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEStateManager or Class /Script/MinigunSimulator.AEStateManager
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(41) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(50) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(53) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(56) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(64) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(67) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(70) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(73) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(73) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(77) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AEStateManager.h(83) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AEState or Class /Script/MinigunSimulator.AEState
2>  F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AnimGraphNode_CopyBoneFromSceneComponent.h(8) : LogUObjectHash:Error: Ambiguous search, could be Class /Script/AEFramework.AnimGraphNode_CopyBoneFromSceneComponent or Class /Script/MinigunSimulator.AnimGraphNode_CopyBoneFromSceneComponent
2>F:/Code/UnrealEngineProj/MinigunSimulator/Source/AEFramework/Public/AnimGraphNode_CopyBoneFromSceneComponent.h(9): error : MinimalAPI cannot be specified when the class is fully exported using a MODULENAME_API macro
2>EXEC : error : UnrealHeaderTool failed for target 'MinigunSimulatorEditor' (platform: Win64, module info: F:\Code\UnrealEngineProj\MinigunSimulator\Intermediate\Build\Win64\MinigunSimulatorEditor\Development\MinigunSimulatorEditor.uhtmanifest, exit code: OtherCompilationError (5)).
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.MakeFile.Targets(37,5): error MSB3075: The command "F:\Code\UnrealEngine\Engine\Build\BatchFiles\Build.bat MinigunSimulatorEditor Win64 Development "F:\Code\UnrealEngineProj\MinigunSimulator\MinigunSimulator.uproject" -waitmutex" exited with code 5. Please verify that you have sufficient rights to run this command.
========== Build: 1 succeeded, 1 failed, 2 up-to-date, 0 skipped ==========


Well, looks like no one replied but I found this excellent video series that explained a lot about how C++ projects work in Unreal.

It looks like there are some conflicts between the module and the game. Before you wrestle with it, there was a bit of improvement in the editor regarding plugin development. You should check that out before dealing with the way we used to do it. I recommend that you watch this training video from Epic.

https://www.youtube.com/watch?v=hr9ybCCPw9Y&t=785s

OK, checking that out.

Wondering what’s the benefit of using Plugins versus Modules? Looks like Plugins are also composed of Modules.

Also fixed my problem. I somehow failed to remove a copy of the header files from the other module that was in the main game module. So it was in fact compiling the same classes twice and there was a conflict.