C++ CUDA 6.5:错误MSB3191无法创建目录和LNK2001未解析的外部符号
我正在Visual Studio 2013 x64上运行CUDA 6.5 我有一个名为MyLib的VC++静态库项目,它与MyClient x64控制台可执行项目链接。我在两个项目中都添加了CUDA 6.5构建定制。此外,我转到Configuration Properties->CUDA C/C++并将这两个项目的“目标机器平台”设置为64位,因为我想为x64平台编译它们 我将MyCUDACode.cpp和MyCUDACode.h文件添加到MyLib项目中,并将它们的项类型标记为CUDA C/C++而不是oc C/C++编译器。MyCUDACode.cpp有许多调用CUDA API函数的函数。此外,MyCUDACode.h引用cuda.h和cuda_runtime.h文件 MyClient与MyLib链接。现在我发现两个编译错误:C++ CUDA 6.5:错误MSB3191无法创建目录和LNK2001未解析的外部符号,c++,visual-studio-2013,cuda,linker-errors,C++,Visual Studio 2013,Cuda,Linker Errors,我正在Visual Studio 2013 x64上运行CUDA 6.5 我有一个名为MyLib的VC++静态库项目,它与MyClient x64控制台可执行项目链接。我在两个项目中都添加了CUDA 6.5构建定制。此外,我转到Configuration Properties->CUDA C/C++并将这两个项目的“目标机器平台”设置为64位,因为我想为x64平台编译它们 我将MyCUDACode.cpp和MyCUDACode.h文件添加到MyLib项目中,并将它们的项类型标记为CUDA C/C
- 编译MyLib时的第一个错误,表示无法创建目录
- 第二,我在链接时遇到未解决的外部符号错误 MyLib的MyClient。以下是日志输出: ------已开始构建:项目:MyLib,配置:版本x64------ 1> C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 6.5.targets(412,9):错误MSB3191:无法创建目录“x64\Release\D:\github\src\helpers\”。不支持给定路径的格式 2> ----构建已启动:项目:MyClient,配置:版本x64------ 2> MyLib.lib(MyCUDACode.obj):错误LNK2001:未解析的外部符号cudaGetDeviceCount 2> MyLib.lib(MyCUDACode.obj):错误LNK2001:未解析的外部符号cudaDeviceCanAccessPeer 2> MyLib.lib(MyCUDACode.obj):错误LNK2001:未解析的外部符号cudaGetDeviceProperties 2> MyLib.lib(MyCUDACode.obj):错误LNK2001:未解析的外部符号cudaSetDevice 2> MyLib.lib(MyCUDACode.obj):错误LNK2001:未解析的外部符号cudaDeviceDisablePeerAccess 2> MyLib.lib(MyCUDACode.obj):错误LNK2001:未解析的外部符号cudaDeviceReset 2> MyLib.lib(MyCUDACode.obj):错误LNK2001:未解析的外部符号cudaDeviceEnablePeerAccess 2> C:…\visual studio 2013\Projects\Prj\x64\Release\MyClient.exe:致命错误LNK1120:7个未解析的外部
我已经尝试了发布和调试模式,但我得到了相同的错误 我只是重复了解决错误的步骤:
- 若要解决此错误(临时解决方法):MSB3191:无法创建目录,不支持给定路径的格式。,只需将Cuda cu和cuh文件复制到Visual studio项目文件夹李>
- [更新]:我最近找到了一个更好的解决方案,用于解决以下问题MSB3191:无法创建目录给定路径的格式不受支持。。此修复程序无需将cu文件移动到VS project文件夹即可工作。为此,请打开文件“C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 6.5.targets”,并移到有问题的行(本例中为412)。此行包含以下xml部分:
<MakeDir Condition="'%(CudaCompile.ExcludedFromBuild)' != 'true'" Directories="%(CudaCompile.DepsOutputDir)" />
如您所见,这是一种指令,它告诉构建系统为正在编译的cuda文件创建一个文件夹。用于文件夹名称的属性是CudaCompile.DepsOutputDir。现在打开文件:“C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 6.5.props”。此道具文件定义目标文件中使用的属性值。现在在这个道具文件中搜索单词DepsOutputDir。只有定义和引用此关键字的XML部分是:<!-- Miscellaneous --> <DepsOutputFile>%(Filename)%(Extension).deps</DepsOutputFile> <DepsOutputDir>$(IntDir)%(RelativeDir)</DepsOutputDir> <DepsOutputPath>%(DepsOutputDir)%(DepsOutputFile)</DepsOutputPath>
现在,要最终解决MSB3191问题,只需从上述xml部分中删除变量%(RelativeDir),并保存props文件(这需要管理权限)%(文件名)%(扩展名).deps $(IntDir)%(相对数字) %(DepsOutputDir)%(DepsOutputFile)
- 要解决此错误:LNK2001:未解析的外部符号,请按照本节中链接器的设置进行操作
- 若要解决此错误(临时解决方法):MSB3191:无法创建目录,不支持给定路径的格式。,只需将Cuda cu和cuh文件复制到Visual studio项目文件夹李>
- [更新]:我最近找到了一个更好的解决方案,用于解决以下问题MSB3191:无法创建目录给定路径的格式不受支持。。此修复程序无需将cu文件移动到VS project文件夹即可工作。为此,请打开文件“C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 6.5.targets”,并移到有问题的行(本例中为412)。此行包含以下xml部分:
<MakeDir Condition="'%(CudaCompile.ExcludedFromBuild)' != 'true'" Directories="%(CudaCompile.DepsOutputDir)" />
如您所见,这是一种指令,它告诉构建系统为正在编译的cuda文件创建一个文件夹。用于文件夹名称的属性是CudaCompile.DepsOutputDir。现在打开文件:“C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 6.5.props”。此道具文件定义目标文件中使用的属性值。现在在这个道具文件中搜索单词DepsOutputDir。只有定义和引用此关键字的XML部分是:<!-- Miscellaneous --> <DepsOutputFile>%(Filename)%(Extension).deps</DepsOutputFile> <DepsOutputDir>$(IntDir)%(RelativeDir)</DepsOutputDir> <DepsOutputPath>%(DepsOutputDir)%(DepsOutputFile)</DepsOutputPath>
现在,要最终解决MSB3191问题,只需从上述xml部分中删除变量%(RelativeDir),并保存props文件(这需要管理权限)%(文件名)%(扩展名).deps $(IntDir)%(相对数字) %(DepsOutputDir)%(DepsOutputFile)
- 要解决此错误:LNK2001:未解析的外部符号,请按照本节中链接器的设置进行操作