I must be too tired or something, but for the life of me I can’t figure out how to link a simple inheriting class AMyChaosSolverActor?
I always get linking errors such as when I call the base class functions:
error LNK2019: unresolved external symbol "public: virtual void __cdecl AChaosSolverActor::BuildSimulationProxy(void)" (?BuildSimulationProxy@AChaosSolverActor@@UEAAXXZ) referenced in function "public: virtual void __cdecl AMyChaosSolverActor::BuildSimulationProxy(void)" (?BuildSimulationProxy@AMyChaosSolverActor@@UEAAXXZ)
MyChaosSolverActor.h:
#pragma once
#include "CoreMinimal.h"
#include "Chaos/ChaosSolverActor.h"
#include "MyChaosSolverActor.generated.h"
/**
*
*/
UCLASS()
class CHAOSCPPTESTS_API AMyChaosSolverActor : public AChaosSolverActor
{
GENERATED_BODY()
public:
// Required virtual function implementations
virtual void BuildSimulationProxy() override;
virtual void ResetSimulationProxy() override;
virtual void WriteToSimulation(float DeltaTime, bool bAsyncTask) override;
virtual void ReadFromSimulation(float DeltaTime, bool bAsyncTask) override;
// Required by IDataflowSimulationInterface
virtual void PreProcessSimulation(float DeltaTime) override;
virtual void PostProcessSimulation(float DeltaTime) override;
// Required by IDataflowPhysicsSolverInterface
virtual FString GetSimulationType() const override;
};
MyChaosSolverActor.cpp:
#include "MyChaosSolverActor.h"
#include "Chaos/ChaosSolverActor.h"
void AMyChaosSolverActor::BuildSimulationProxy()
{
Super::BuildSimulationProxy(); // <-- Super call causing link error
}
void AMyChaosSolverActor::ResetSimulationProxy()
{
}
void AMyChaosSolverActor::WriteToSimulation(float DeltaTime, bool bAsyncTask)
{
}
void AMyChaosSolverActor::ReadFromSimulation(float DeltaTime, bool bAsyncTask)
{
}
void AMyChaosSolverActor::PreProcessSimulation(float DeltaTime)
{
}
void AMyChaosSolverActor::PostProcessSimulation(float DeltaTime)
{
}
FString AMyChaosSolverActor::GetSimulationType() const
{
return FString(TEXT("CustomChaosSolver"));
}
Build.cs:
using UnrealBuildTool;
public class ChaosCPPTests : ModuleRules
{
public ChaosCPPTests(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "ChaosSolverEngine" });
PrivateDependencyModuleNames.AddRange(new string[] { });
}
}
Thanks a lot for you help, and sorry if I missed something basic.