Visual studio 2008 VS2008未编译cuda

Visual studio 2008 VS2008未编译cuda,visual-studio-2008,cuda,Visual Studio 2008,Cuda,简而言之,当我尝试在IDE中编译VS2008项目时,它失败了,但当我在命令提示符下使用相同的命令行时,它会编译。有人能帮忙吗 细节 将VS2008与Cuda toolkit 3.2结合使用。还安装了VS2010。 执行以下操作:在开始程序之前 添加了自定义规则文件,该文件位于: C:\Program Files x86\NVIDIA GPU Computing Toolkit\CUDA\v3.2\extras\visual studio\U integration\rules 然后将C:\Pro

简而言之,当我尝试在IDE中编译VS2008项目时,它失败了,但当我在命令提示符下使用相同的命令行时,它会编译。有人能帮忙吗

细节

将VS2008与Cuda toolkit 3.2结合使用。还安装了VS2010。 执行以下操作:在开始程序之前

添加了自定义规则文件,该文件位于: C:\Program Files x86\NVIDIA GPU Computing Toolkit\CUDA\v3.2\extras\visual studio\U integration\rules 然后将C:\Program Files x86\NVIDIA GPU Computing Toolkit\CUDA\v3.2\lib\x64添加到项目属性中linker->general中的其他库目录中,并将cudart.lib和CUDA.lib添加到其他依赖项中。 如果我遗漏了什么,请告诉我

cmd提示符上set命令的输出为:

CUDA_BIN_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\\bin
CUDA_INC_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\\include
CUDA_LIB_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\\lib\x64
CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\
CUDA_PATH_V3_2=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\
哎呀,忘记错误消息了


nvcc不仅是一个编译器,还可以用于链接

但是,当您在VS2008中工作时,链接阶段由VS执行。您必须告诉它包含额外的cuda库文件

在项目属性集中:

配置属性->链接器->常规。设置:包含CUDA lib目录的其他库目录。值$CUDA_LIB_PATH在您的情况下应该足够了,因为此环境变量指向正确的方向

配置属性->链接器->输入。Set:cudart.lib的其他依赖项


nvcc不仅是一个编译器,还可以用于链接

但是,当您在VS2008中工作时,链接阶段由VS执行。您必须告诉它包含额外的cuda库文件

在项目属性集中:

配置属性->链接器->常规。设置:包含CUDA lib目录的其他库目录。值$CUDA_LIB_PATH在您的情况下应该足够了,因为此环境变量指向正确的方向

配置属性->链接器->输入。Set:cudart.lib的其他依赖项


您正在使用nvcc为32位计算机32编译,但链接的cuda lib为64位[..\lib\x64。

您正在使用nvcc为32位计算机32编译,但链接的cuda lib为64位[..\lib\x64。

请确保以下两件事:

您已经在其他输入中添加了cudart.lib

cudart.lib和cudartxx_xx_x.dll的路径在VC++目录中设置。还可以将cuda dll的路径添加到系统的环境变量中


这里有一个循序渐进的指南:

确保有两件事:

您已经在其他输入中添加了cudart.lib

cudart.lib和cudartxx_xx_x.dll的路径在VC++目录中设置。还可以将cuda dll的路径添加到系统的环境变量中


这里有一个分步指导:

请不要让我们猜测错误消息。是的,错误消息是什么?请不要让我们猜测错误消息。是的,错误消息是什么?正如我在前面的步骤中提到的,我已经做了这些。正如我在前面的步骤中提到的,我已经做了这些。这很有效。但是,我想知道为什么我能够在命令行上编译我的程序。您使用的是x86或x64命令提示符吗?这可能是方程式中的一个因素,这是有效的。但是,我想知道为什么我能够在命令行上编译我的程序。您使用的是x86或x64命令提示符吗?这可能是方程式中的一个因素。
1>t.cu.obj : error LNK2019: unresolved external symbol ___cudaUnregisterFatBinary@4 referenced in function "void __cdecl __cudaUnregisterBinaryUtil(void)" (?__cudaUnregisterBinaryUtil@@YAXXZ)
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaLaunch@4 referenced in function "enum cudaError __cdecl cudaLaunch<char>(char *)" (??$cudaLaunch@D@@YA?AW4cudaError@@PAD@Z)
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaSetupArgument@12 referenced in function "void __cdecl __device_stub__Z12compute_sum4P6float4S0_S0_i(struct float4 *,struct float4 *,struct float4 *,int)" (?__device_stub__Z12compute_sum4P6float4S0_S0_i@@YAXPAUfloat4@@00H@Z)
1>t.cu.obj : error LNK2019: unresolved external symbol ___cudaRegisterFunction@40 referenced in function "void __cdecl __sti____cudaRegisterAll_47_tmpxft_00000ea8_00000000_8_t_compute_10_cpp1_ii_65ce9b46(void)" (?__sti____cudaRegisterAll_47_tmpxft_00000ea8_00000000_8_t_compute_10_cpp1_ii_65ce9b46@@YAXXZ)
1>t.cu.obj : error LNK2019: unresolved external symbol ___cudaRegisterFatBinary@4 referenced in function "void __cdecl __sti____cudaRegisterAll_47_tmpxft_00000ea8_00000000_8_t_compute_10_cpp1_ii_65ce9b46(void)" (?__sti____cudaRegisterAll_47_tmpxft_00000ea8_00000000_8_t_compute_10_cpp1_ii_65ce9b46@@YAXXZ)
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaEventDestroy@4 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaEventElapsedTime@12 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaEventSynchronize@4 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaConfigureCall@32 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaEventRecord@8 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaThreadSynchronize@0 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaEventCreate@4 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaMemcpy@16 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaMalloc@8 referenced in function _main
1>D:\projects\cup1\Debug\cup1.exe : fatal error LNK1120: 14 unresolved externals
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\\bin\nvcc.exe"    -gencode=arch=compute_10,code=\"sm_10,compute_10\" -gencode=arch=compute_20,code=\"sm_20,compute_20\"  --machine 32 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin"    -Xcompiler "/EHsc /W3 /nologo /O2 /Zi   /MT  "  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\\include" -maxrregcount=32  --compile -o "Debug/t.cu.obj" t.cu