在某工程中新添加了文件x.cu与x.hpp,实现了一些功能,最后编译整个工程的时候就出现了这个问题:
error LNK2019: unresolved external symbol
这是链接错误,表示没有找到编译好的二进制库文件~
这很诡异,因为我并没有引用什么第三方的lib(这很容易出现上述问题),编译器提示出现问题的代码是我自己写的啊!
又感觉脊背发凉………
最后不断排查,几乎把所有可能出错的代码都注释了,最后查到问题了,原来是template没有实例化= =
并非没有找到编译好的二进制文件,而是根本就没有生成二进制文件……
如果在代码中使用了模板template,那么在类定义的最后一定要显示实例化模板,例:
template class WeeLayer<Cpu, activation_functions::Tanh>;
template class WeeLayer<Gpu, activation_functions::Logistic>;