UE4 UFUNCTION(NetMulticast)编译错误.错误LNK2005:函数已在*.cpp.obj中定义



MyActor.h

UCLASS()
class FPS_API AMyActor: public AActor
{
GENERATED_BODY()
...
public:
UFUNCTION(NetMulticast, Reliable)
void MulticastRPCMyFunction();
...
}

MyActor.cpp

void AMyActor::MulticastRPCMyFunction()
{
UE_LOG(LogTemp, Log, TEXT("Message"));
}

当我编译我的项目时,我可以查看下面的错误消息。编译错误

*.gen.cpp.obj : error LNK2005: "public: void __cdecl *::MulticastRPCMyFunction(void)" (?MulticastRPCMyFunction@*@@QEAAXXZ) already defined in *.cpp.obj

对于网络函数(在您的情况下是NetMulticast元数据(,您不会在Cpp文件中将函数命名为头文件,因为它是由UHT生成的(因此已经定义了关于它的链接器错误(。

在您的情况下,您的Cpp文件需要如下所示:

void AMyActor::MulticastRPCMyFunction_Implementation()
{
UE_LOG(LogTemp, Log, TEXT("Message"));
}

请注意函数名称中添加了_Implementation

如果您添加了WithValidation元数据,那么您将需要在函数名称末尾添加_Validate的另一个函数。

最新更新