Common but confusing compile errors

unresolved external symbol

Typically caused by missing dependency in build.cs

Inconsistent DLL linkage

Probably incorrect YOURMODULE_API macro in header file class declaration. Remove or replace with the macro for your module.

generated.h already exists

Error C1189 :#error: “NiagaraDataSet.generated.h already included, missing ‘#pragma once’ in NiagaraDataSet.h”

Typically caused by a bad include, such as

#include "../../../../path/to/unreal/something/other.h"

Duplicate function declaration

This can sometimes be caused by using BlueprintNativeEvent and not following the correct naming scheme:

//.h
UFUNCTION(BlueprintNativeEvent)
void MyFunction();
 
//.cpp
void AMyActor::MyFunction() {
 
}

In the above case, the function should be called MyFunction_Implementation which will solve the problem.

member of dll interface class may not be declared with dll interface

This occurs if you have an incorrect MODULENAME_API macro used on one of the functions declarations of a class in your header file. The error message usually contains the name of the function using the wrong macro, and the file where it occurs. Remove the macro or replace it with the correct one for your module.