An "unresolved symbol error" is a linker error, as opposed to a compiler error. Linking is the second stage of what appears to be a single "build" event in an IDE like Visual Studio.
The central problem here concerns the distinction between declarations and definitions in C++. In short, a declaration introduces a symbol (like a function) to the compiler, while a definition provides the actual instantiation/implementation of that symbol for the linker. When considering a function, the definition is what you've probably heard referred to as a prototype. Something like this:
void registerCu(int x, int y, int depth);
Notice that it does not provide the implementation for the function, so it is just a definition. That's different from a declaration, which provides the full implementation:
void registerCu(int x, int y, int depth)
{
// do magic stuff here
}
If this were a single, self-contained project, you could assume that the linker error was alerting you that you had failed to provide a definition of the function. That probably means you wrote a prototype in a header somewhere, but didn't actually write the contents of the function in a corresponding .cpp file.
But since your comments to infact's answer indicate that you have indeed provided the implementation in a .cpp file, and the question says that you're working with multiple projects, it's more likely that the second project is unable to find the function definition. You've included the header from the first project that provides the declaration to the second project, so the compiler is happy. But when the linker gets around to actually trying to link in the object code for that function call, it comes up disappointed because it can't find the definition.
Fix this by instructing the linker for the second project to look in the object code for the first project for any definitions that it can't find. You generally do this by adding the path to the folder that contains the build output for your first project to the linker settings for your second project.