按教程使用纹理内存texture时显示 texture不是模板。
网上找了半天,只知道这个报错是VS没有识别的问题,运行起来并没有实质性影响。
但是一条红线在这画着总觉得很别扭,于是就想取消它,最终给我找到了,解决方法就是在主程序前面加几句废话。
根据网上提示找到文件cuda_texture_types.h,可以看到texture的模板是在这里定义的。
网上说的没错,但是往上翻。。
有这么一段,看一下显示__CUDACC__没有定义。
于是在主程序第一行加入这个宏定义。
像这样,texture就不报错了,但是会有一个warning。
其实可以说明,这个texture会显示不是模板是因为cuda定义了它但是可能VS前面没有识别到。
不过系统的不管,为了自己的程序一定要 0 ERROR,0 Warning。所以最后把加在主程序的定义改成条件定义。
#ifndef __CUDACC__
#define __CUDACC__
#endif // !__CUDACC__
#include "cuda_texture_types.h"
我的程序前面看起来是这样的
不加cuda_texture_types.h,然后把这一段宏定义放在cuda的各种include前面其实texture也不红了,只不过我发现texture不报红了,__global__爆红了,,这个定义在里面应该用的挺多的,,为了整体不报红就是这个样子了。
VS识别的时候,认为__CUDACC__没有定义,所以需要定义。在程序真正执行的时候,因为已经定义过了,所以没有执行,所以说是废话,不过没有红线看起来还是舒服的。。。