LNK Errors usually appear when you do not have all the necessary modules connected (in the ModuleName.Build.cs file), the dependencies of which you use.
Module is usually the name of the folder after /Source/ in the full path to the file.
But it seems like all your dependencies are included in the Engine module, which is enabled by default.
ENUM also catches the eye. If I’m not mistaken, for UFUNCTION(BlueprintCallable) need to use TEnumAsByte< EPokerHand > instead of EPokerHand.