在visual c ++中,我创建了一个包含两个文件myLib.h和myLib.cpp的静态库。我还有一个控制台应用程序项目,其中包含引用此库的文件testSequence.cpp。
在myLib.h中,我定义了一个类template<class prec> class sequence
,它具有函数声明prec *getPrimes(int numToGet)
,然后在myLib.cpp中定义该函数。但是,当我构建testSequence时,会出现链接错误,并显示error LNK2019: unresolved external symbol "public: int * __thiscall mathLib::sequence<int>::getPrimes(int)" (?getPrimes@?$sequence@H@mathLib@@QAEPAHH@Z) referenced in function "char * __cdecl codeString(char *,char *,bool)" (?codeString@@YAPADPAD0_N@Z)
所以,是的,帮助会很好。
答案 0 :(得分:3)
阅读this以获取有关错误的说明。
基本上,你要做的事情是无法完成的。当编译器尝试为给定的模板类型参数实例化时,编译器必须能够看到类模板的实现。您需要将所有成员函数的实现移动到头文件。