Cuda compilation error: class template has already been defined
Cuda compilation error: class template has already been defined
我是 cuda 的新手,并尝试 运行 我在网上找到的一个简单的矢量添加示例来开始。我正在使用 win10 64 位和 visual studio 2017.
#include "cuda_runtime.h"
#include "cuda.h"
#include "device_launch_parameters.h"
#include <iostream>
#include <math.h>
// Kernel function to add the elements of two arrays
__global__
void add(int n, float *x, float *y)
{
int index = threadIdx.x;
int stride = blockDim.x;
for (int i = index; i < n; i += stride)
y[i] = x[i] + y[i];
}
int main(void)
{
int N = 1 << 20;
float *x, *y;
// Allocate Unified Memory – accessible from CPU or GPU
cudaMallocManaged(&x, N * sizeof(float));
cudaMallocManaged(&y, N * sizeof(float));
// initialize x and y arrays on the host
for (int i = 0; i < N; i++) {
x[i] = 1.0f;
y[i] = 2.0f;
}
// Run kernel on 1M elements on the GPU
add <<<1, 1 >>>(N, x, y);
// Wait for GPU to finish before accessing on host
cudaDeviceSynchronize();
// Check for errors (all values should be 3.0f)
float maxError = 0.0f;
for (int i = 0; i < N; i++)
maxError = fmax(maxError, fabs(y[i] - 3.0f));
std::cout << "Max error: " << maxError << std::endl;
// Free memory
cudaFree(x);
cudaFree(y);
return 0;
}
我使用了 "Developer Command Prompt for VS2017",因为 window 的命令提示符给了我
nvcc fatal : Cannot find compiler 'cl.exe' in PATH
在线解决方案对我不起作用。然后我 运行 这个命令(--compiler -options 已经解决了一些错误)
nvcc add.cu --compiler-options "-D _WIN64"
但编译器仍然给我错误
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(1824): error: class template "std::result_of" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(1824): error: class template "std::result_of" has already been defined
我一直在寻找解决方案。似乎其他有类似问题的人在他们包含的 headers 中遇到问题,但我的示例代码是从互联网上下载的,上传它的人没有任何问题,这让我对什么感到困惑部分程序有问题
P.S.: 不知道我的cuda有没有安装好。细节:
我无法在 windows 上安装 cuda,安装程序一直告诉我安装失败。然后我在 post #19 的 link 中找到了解决方案:https://devtalk.nvidia.com/default/topic/1035535/cuda-setup-and-installation/cuda-9-2-does-not-work-with-visual-studio-2017-15-7-1/2
好像没问题,不知道是不是问题
我在 Nvidia CUDA 论坛中 post 编辑了相同的 post:
Link Here
我使用 post 中的方法重新安装了多次,但仍然遇到相同的 "class template" 问题。
然后我用同样的方法重装了CUDA 9.1和VS2017 ver 15.6.7,终于可以了。
我遇到的其他问题也在 post 中。
我在 Visual Studio 2019 和 CUDA v10.1 中遇到了同样的问题,但是重新安装没有任何区别。最初我安装了 Visual Studio 2012,这是不受支持的,所以我更新了版本,然后我开始看到这里提到的模板 class 重新定义错误 - 我使用的解决方案是更改我的环境变量 c1.exe / c1.dll 从 (x86) 到 (x64) 目录,我的所有错误都消失了。
是:
D:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Tools\MSVC.22.27905\bin\Hostx64\x86
现在:
D:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Tools\MSVC.22.27905\bin\Hostx64\x64
我是 cuda 的新手,并尝试 运行 我在网上找到的一个简单的矢量添加示例来开始。我正在使用 win10 64 位和 visual studio 2017.
#include "cuda_runtime.h"
#include "cuda.h"
#include "device_launch_parameters.h"
#include <iostream>
#include <math.h>
// Kernel function to add the elements of two arrays
__global__
void add(int n, float *x, float *y)
{
int index = threadIdx.x;
int stride = blockDim.x;
for (int i = index; i < n; i += stride)
y[i] = x[i] + y[i];
}
int main(void)
{
int N = 1 << 20;
float *x, *y;
// Allocate Unified Memory – accessible from CPU or GPU
cudaMallocManaged(&x, N * sizeof(float));
cudaMallocManaged(&y, N * sizeof(float));
// initialize x and y arrays on the host
for (int i = 0; i < N; i++) {
x[i] = 1.0f;
y[i] = 2.0f;
}
// Run kernel on 1M elements on the GPU
add <<<1, 1 >>>(N, x, y);
// Wait for GPU to finish before accessing on host
cudaDeviceSynchronize();
// Check for errors (all values should be 3.0f)
float maxError = 0.0f;
for (int i = 0; i < N; i++)
maxError = fmax(maxError, fabs(y[i] - 3.0f));
std::cout << "Max error: " << maxError << std::endl;
// Free memory
cudaFree(x);
cudaFree(y);
return 0;
}
我使用了 "Developer Command Prompt for VS2017",因为 window 的命令提示符给了我
nvcc fatal : Cannot find compiler 'cl.exe' in PATH
在线解决方案对我不起作用。然后我 运行 这个命令(--compiler -options 已经解决了一些错误)
nvcc add.cu --compiler-options "-D _WIN64"
但编译器仍然给我错误
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(95): error: class template "std::_Is_function" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(139): error: class template "std::_Is_memfunptr" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(1824): error: class template "std::result_of" has already been defined
C:\Programming\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\include\type_traits(1824): error: class template "std::result_of" has already been defined
我一直在寻找解决方案。似乎其他有类似问题的人在他们包含的 headers 中遇到问题,但我的示例代码是从互联网上下载的,上传它的人没有任何问题,这让我对什么感到困惑部分程序有问题
P.S.: 不知道我的cuda有没有安装好。细节: 我无法在 windows 上安装 cuda,安装程序一直告诉我安装失败。然后我在 post #19 的 link 中找到了解决方案:https://devtalk.nvidia.com/default/topic/1035535/cuda-setup-and-installation/cuda-9-2-does-not-work-with-visual-studio-2017-15-7-1/2 好像没问题,不知道是不是问题
我在 Nvidia CUDA 论坛中 post 编辑了相同的 post: Link Here
我使用 post 中的方法重新安装了多次,但仍然遇到相同的 "class template" 问题。
然后我用同样的方法重装了CUDA 9.1和VS2017 ver 15.6.7,终于可以了。
我遇到的其他问题也在 post 中。
我在 Visual Studio 2019 和 CUDA v10.1 中遇到了同样的问题,但是重新安装没有任何区别。最初我安装了 Visual Studio 2012,这是不受支持的,所以我更新了版本,然后我开始看到这里提到的模板 class 重新定义错误 - 我使用的解决方案是更改我的环境变量 c1.exe / c1.dll 从 (x86) 到 (x64) 目录,我的所有错误都消失了。
是: D:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Tools\MSVC.22.27905\bin\Hostx64\x86
现在: D:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Tools\MSVC.22.27905\bin\Hostx64\x64