我的cuda代码在调试模式下编译,但不在发布模式下编译。当我只是将模式更改为release并命中compile时,我得到以下链接器错误:
Error 16 error LNK2001: unresolved external symbol _cudaConfigureCall@32 JGJJSMJMDJLMOMpartition.cu.obj
Error 17 error LNK2001: unresolved external symbol _cudaGetErrorString@4 JGJJSMJMDJLMOMpartition.cu.obj
Error 18 error LNK2001: unresolved external symbol _cudaEventElapsedTime@12 JGJJSMJMDJLMOMpartition.cu.obj
Error 19 error LNK2001: unresolved external symbol _cudaEventSynchronize@4 JGJJSMJMDJLMOMpartition.cu.obj
Error 20 error LNK2001: unresolved external symbol _cudaEventRecord@8 JGJJSMJMDJLMOMpartition.cu.obj
Error 21 error LNK2001: unresolved external symbol _cudaEventCreate@4 JGJJSMJMDJLMOMpartition.cu.obj
Error 22 error LNK2001: unresolved external symbol _cudaThreadSynchronize@0 JGJJSMJMDJLMOMpartition.cu.obj
关于如何解决这个问题的任何想法?
答案 0 :(得分:3)
查看您在调试版本中使用的库列表,并确保它们(或其发行版本等)包含在发布版本中。
在发布模式下检查库路径是否正确
确保发布库存在且位于正确的目录中
答案 1 :(得分:0)
我最近在VS 2010中遇到过这种情况。我发现了
$(CudaToolkitLibdir)\cudart.lib
发布版本的Linker> Additional Dependencies项目属性中缺少。我很困惑为什么会出现这种情况,因为它是VS 2010和CUDA ToolKit 5.0的全新安装。
CUDA Toolkit安装程序是否负责修改cudart.lib之类的VS2010依赖项?我当然没有手动安装调试模式的cudart.bin依赖项。似乎很奇怪安装程序会跳过Release版本。