The error itself says that somewhere in your code you are using PathCchRemoveFileSpec
(or whatever). The compiler was able to find the function signature so it knew what arguments to expect and what data it returned. This is what header files provide so it got past the compiler.
However eventually the actual implementation needs to be brought in to make the program complete. This is where libraries (.obj, .lib, .dll) come in. They provide the actual implementation and that is what the linker is looking for. When it cannot find the implementation of a function that you are calling then you get this error.
If the function is in your code somewhere then the .obj produced during the build contains it. If it is library code provided by someone else then you'll get a .lib file instead. That ships with the library in question. If the library is a static library then all the code is in the .lib and it is merged into your code by the linker. However if it is a dynamic library then the .lib only contains the necessary code to link it to the DLL that your code is going to rely on at runtime. This is the most common case for things like operating system files.
With that out of the way, a quick google for the function in question goes to here. In the Requirements section it indicates the header file you need to include to make the compiler happy and the library file you need to link with to make the linker happy. In your Linker settings should be a list of libraries you depend on (kernel32, user32, etc). Ensure that pathcch.lib
is part of that list. Assuming you have your system configured with the necessary SDKs then it should find the library as part of the linker search process.