Weird LNK2005 error...

Here’s my .cpp file


#include "DataTableFunctionLibrary.h"
#include "SlavesOfRome.h"


bool UPsTableFunctionLibrary::GetDataTableIndexOfRow(FDataTableRowHandle Handle, int32& RowIndex)
{
    RowIndex = INDEX_NONE;

    if (!Handle.DataTable)
        return false;

    TArray<FName> RowNames = Handle.DataTable->GetRowNames();
    RowIndex = RowNames.IndexOfByKey(Handle.RowName);
    return RowIndex != INDEX_NONE;
}

bool UPsTableFunctionLibrary::GetDataTableRowByIndexWildcard(UDataTable* Table, int32 RowIndex, FTableRowBase& Row)
{
    checkNoEntry();
    return false;
}

bool UPsTableFunctionLibrary::Generic_GetDataTableRowByIndexWildcard(UDataTable* Table, int32 RowIndex, void* OutRowPtr, UStructProperty* OutRowProperty)
{
    if (!OutRowPtr)
        return false;

    if (!OutRowProperty)
        return false;

    if (!Table)
        return false;

    TArray<FName> RowNames = Table->GetRowNames();
    if (RowIndex < 0 || RowIndex >= RowNames.Num())
        return false;

    FName RowName = RowNames[RowIndex];
    void* RowPtr = Table->FindRowUnchecked(RowName);
    if (!RowPtr)
        return false;

    UScriptStruct* TableRowStruct = Table->RowStruct;
    if (!TableRowStruct)
        return false;

    UScriptStruct* OutRowStruct = OutRowProperty->Struct;
    if (!OutRowStruct)
        return false;

    if (!TableRowStruct->IsChildOf(OutRowStruct))
        return false;

    OutRowStruct->CopyScriptStruct(OutRowPtr, RowPtr);
    return true;
}

bool UPsTableFunctionLibrary::GetDataTableRowByNameWildcard(UDataTable* Table, FName RowName, FTableRowBase& Row)
{
    checkNoEntry();
    return false;
}

bool UPsTableFunctionLibrary::Generic_GetDataTableRowByNameWildcard(UDataTable* Table, FName RowName, void* OutRowPtr, UStructProperty* OutRowProperty)
{
    if (!OutRowPtr)
        return false;

    if (!OutRowProperty)
        return false;

    if (!Table)
        return false;

    void* RowPtr = Table->FindRowUnchecked(RowName);
    if (!RowPtr)
        return false;

    UScriptStruct* TableRowStruct = Table->RowStruct;
    if (!TableRowStruct)
        return false;

    UScriptStruct* OutRowStruct = OutRowProperty->Struct;
    if (!OutRowStruct)
        return false;

    if (!TableRowStruct->IsChildOf(OutRowStruct))
        return false;

    OutRowStruct->CopyScriptStruct(OutRowPtr, RowPtr);
    return true;
}

int32 UPsTableFunctionLibrary::GetDataTableRowCount(UDataTable* Table)
{
    if (!Table)
        return 0;

    TArray<FName> RowNames = Table->GetRowNames();
    return RowNames.Num();
}

bool UPsTableFunctionLibrary::GetDataTableRowWildcard(FDataTableRowHandle Handle, FTableRowBase& Row)
{
    checkNoEntry();
    return false;
}

bool UPsTableFunctionLibrary::Generic_GetDataTableRowWildcard(FDataTableRowHandle Handle, void* OutRowPtr, UStructProperty* OutRowProperty)
{
    if (!OutRowPtr)
        return false;

    if (!OutRowProperty)
        return false;

    const UDataTable* Table = Handle.DataTable;
    if (!Table)
        return false;

    void* RowPtr = Table->FindRowUnchecked(Handle.RowName);
    if (!RowPtr)
        return false;

    UScriptStruct* TableRowStruct = Table->RowStruct;
    if (!TableRowStruct)
        return false;

    UScriptStruct* OutRowStruct = OutRowProperty->Struct;
    if (!OutRowStruct)
        return false;

    if (!TableRowStruct->IsChildOf(OutRowStruct))
        return false;

    OutRowStruct->CopyScriptStruct(OutRowPtr, RowPtr);
    return true;
}