对不起,VS2013仍然存在,但我认为这不是问题。相同的代码可以在linux上正确编译。我假设我需要定义uint而不是编辑100多行代码。我在以下代码的第一行上收到“错误:显式类型丢失(假定为“ int”)”
__device__ uint inline get_smid(void)
{
uint ret;
asm("mov.u32 %0, %%smid ;" : "=r"(ret) );
return ret;
}
在应用程序的属性处只有CUDA =>主机=>我放入的预处理程序定义
WIN32;uint="unsigned int"
这似乎可以修复“假定的int”,但现在我收到“错误:期望声明”用源中的unsigned int替换uint可以编译而不会出错。有很多uint,这在linux构建中会中断。除了'uint =“ unsigned int”'之外还需要其他吗?可能是导致NVCC接受uint而不给出错误的开关?
刚刚发现了很多ushort,我猜也是一样的问题。另外,查看Linux构建,源代码是用gcc编译的,但是链接是用nvcc完成的,所以有所不同。
====样本CUDA具有ushort ====我一定没有正确设置包含,因为这些变量可能可以使用。
我放弃了尝试像示例CUDA程序那样定义uint或ushort
typedef unsigned int uint;
typedef unsigned short ushort;
所以我只是将它们放在需要它的每个cu文件中。