If you have a function in your C++ header file called “Blah”, and it’s hooked up to Unreal via macros like BlueprintCallable, then you need to call it Blah_Implementation in the .CPP file.
Why? When in vanilla C++ you’d just call it MyClass::Blah and call it a day? Because Unreal actually implements a function called MyClass::Blah behind the scenes for you that hides the fact that you’re calling into Blueprint or sending a network RPC, and you can just call myClass->Blah() transparently, as if all that functionality were a natural part of a C++ program, without having to think about those details. It’s a design decision basically.
Ultimately what this compiler error is saying is that you declared a function called MyClass::Blah, and then implemented it twice (Unreal created an implementation for you and then you created a second one), which is bad because the compiler only expects it to be defined once. The other error basically means that Unreal declared a function called Blah_Implementation but you didn’t actually define that function in a .cpp file. (Technically this kind of error is called a Linker Error, which is why the error ID starts with LNK. The linker is the last stage of a C++ compiler where it tries to link everything that’s been compiled together, which is where it notices if something has been defined twice or declared but never defined)