I have Actors with dialogue data assigned to them that I want to display in my UI. All my singelton is doing is saving the Current Actor’s dialogue to a variable, and retrieving it when the UI comes up. It doesn’t cause any issues in the editor or if I package the project, but causes a crash if I launch without the editor. How would I go about solving the undefined symbol?
error:
/opt/unreal-engine/Engine/Binaries/Linux/UE4Editor: symbol lookup error: /home/zerophase/Documents/unrealprojects/Dialogues/Binaries/Linux/libUE4Editor-Dialogues-Linux-DebugGame.so: undefined symbol: _ZN10UMessenger14AssignDialogueEP13UBaseDialogue
Launch command:
/path/to/ue4/UE4Editor "/path/to/project/Dialogues/Dialogues.uproject" -game -debug -targetplatform=LinuxNoEditor
Messenger header:
#pragma once
#include "BaseDialogue.h"
class DIALOGUES_API UMessenger
{
public:
static UMessenger *Instance();
UMessenger(UMessenger const&) = delete;
UMessenger(UMessenger &&) = delete;
UMessenger &operator=(UMessenger const &) = delete;
UMessenger &operator=(UMessenger &&) = delete;
void AssignDialogue(UBaseDialogue *baseDialogue);
UBaseDialogue *GetDialogue();
private:
UMessenger() {}
~UMessenger() {}
static UMessenger *instance;
UBaseDialogue *bd;
};
Messenger cpp:
#include "Dialogues.h"#include "Messenger.h"
UMessenger *UMessenger::instance = nullptr;
void UMessenger::AssignDialogue(UBaseDialogue *baseDialogue)
{
bd = baseDialogue;
}
UBaseDialogue *UMessenger::GetDialogue()
{
return bd;
}
UMessenger *UMessenger::Instance()
{
if(!instance)
instance = new UMessenger();
return instance;
}