我要编译一大堆需要OpenCL 1.2的代码。据我了解,nVIDIA已经发布了OpenCL 1.2驱动程序。我安装了最新的CUDA Toolkit 7.0版。但是当我编译代码时,我得到的错误如下:
Error 9 error LNK2001: unresolved external symbol clReleaseDevice C:\Users\???\Downloads\FireRaysSDK-1.0\FireRaysSDK-1.0\App\CLW64.lib(CLWParallelPrimitives.obj) App
Error 7 error LNK2001: unresolved external symbol clRetainDevice C:\Users\???\Downloads\FireRaysSDK-1.0\FireRaysSDK-1.0\App\CLW64.lib(CLWContext.obj) App
之后我从khronos网站下载OpenCL 1.2的头文件。现在,它编译但我得到unresolved external link
这些函数,因为它们的实现不在OpenCL.lib
中。
我可以使用OpenCL.lib
来编译OpenCL 1.2代码吗?有没有办法从DLL文件中获取它们的实现?因为我知道nvidia已经为其驱动程序添加了opencl 1.2支持。
答案 0 :(得分:3)
您是正确的,NVIDIA现在在其最新驱动程序中提供OpenCL 1.2支持,但CUDA 7.0 SDK在这些驱动程序发布之前的某个时间发布,因此可能不包含OpenCL 1.2标头或库。我刚检查了CUDA 7.5 Release Candidate,它似乎附带了您需要的OpenCL 1.2库。
您可以链接任何OpenCL 1.2库,它应该与NVIDA的驱动程序一起使用。您应该只能从AMD或Intel安装SDK,或者只需下载并构建OpenCL 1.2 Installable Client Driver (ICD) Loader directly from Khronos。