一般来说,LNK2019(Relese版本是LNK2001)的问题往往是库目录设置不对或者.lib文件没有被准确包含。但我今天碰到的这个问题比较难以排查。
首先我发现,他报的无法解析的外部符号都是我定义的函数,并不是库函数,并且我也能保证库目录没有问题(沿用的相同的属性表),那什么情况下会导致自己定义的函数链接不上呢
有些教程里会说,你的声明和实现如果对不上,就会出现这个报错,其本质是声明的函数没有被实现。但是编码的过程我也确定这几个函数都实现了,并且能通过VS的快捷跳转,那我就要排查这几个函数在编译过程中有没有被编译器找到。
果然,右击实现这几个函数的文件,能够发现
这个.cu文件没有参与生成,所以编译的过程中编译器认为我这是只声明,无实现。这应该是我创建CUDA工程时的疏忽。
改成以下,就能顺利通过编译了