请问 我在 cu文件中写的模板函数 ,在cpp 文件中去调用,为什么会出现链接错误,如果是非模板函数,就没有问题。
比如,在 .cu文件中写了
template
void test(T* t){
return;
}
cpp 文件中调用:
float* t;
test(t);
就会出现如下错误:
error LNK2019: 无法解析的外部符号 “void __cdecl test(float *)” (??$test@M@@YAXPAM@Z),该符号在函数XX中被引用。
而如果去掉模板定义,就没有问题。why ?
LZ您好:
我不是C++用户,暂时无法为您解答此问题,唯一能做出的建议是,请参阅CUDA C Programming Guide Appendix.D——C/C++ Language Support。
请其他网友/斑竹/总版主/NV原厂支持人员予以补充。
祝您编码顺利~
我也不懂C++,不过,楼主在cpp文件中调用.cu的test函数时候,在.cpp文件中写函数声明了?
比如:
extern tmplete void test(T *t);
或许C++真的不需要函数先声明再使用?
抱歉,我不是C++用户。这个真心无法回答。
建议其他会员、版主、NVIDIA官方支持以及总版主中,喜欢C++的亲们为您解答。