You didn't say what error message you get but I guess it's because you define the template in a source file instead of the header file. Templates are a bit special so you more or less have to define them in the header file to work.
You need to ensure the entire definition of the template, including the method definitions, are included in any translation unit that uses the template. You can't just link against an object file containing the definition - you have to include it.
In practice, this means that you should include the entire function definition in the header file, not just the prototype.
Thanks for not telling us what the error message is, by the way. Having to play guessing games makes this so much more fun.