'clUnloadCompiler':在尝试编译OpenCL时被声明为已弃用

时间:2013-05-30 17:37:47

标签: opencl

我正在尝试编译this。我正在使用AMD SDK。我正在使用上述SDK附带的头文件,它们位于:

C:\Program Files (x86)\AMD APP\include\CL

教程说明:

标头文件 与C ++中使用的任何其他外部API一样,在使用OpenCL™API时必须包含头文件。通常,这是在主要包含目录中的目录CL中。对于我们的C ++绑定(用cl.h替换直接的C API):

我发现最后一点有点令人困惑。我正在使用.h和.hpp

#include <CL/cl.h> when this is used it will compile the checkErr function
#include <CL/cl.hpp> when this is used it gives me access to the cl namespace

当我尝试编译此代码时,它失败了:

'clUnloadCompiler': was declared deprecated

enter image description here

其他详情(删除#include&lt; CL / c.h&gt;后)

现在提供以下错误列表: enter image description here

error C4996: Error  2   error LNK2019: unresolved external symbol _clReleaseCommandQueue@4 referenced in function "public: static int __cdecl cl::detail::ReferenceHandler<struct _cl_command_queue *>::release(struct _cl_command_queue *)" (?release@?$ReferenceHandler@PAU_cl_command_queue@@@detail@cl@@SAHPAU_cl_command_queue@@@Z)    


error LNK2019: unresolved external symbol _clReleaseContext@4 referenced in function "public: static int __cdecl cl::detail::ReferenceHandler<struct _cl_context *>::release(struct _cl_context *)" (?release@?$ReferenceHandler@PAU_cl_context@@@detail@cl@@SAHPAU_cl_context@@@Z)

在我的项目的属性中,我有:

  1. 添加了C:\ Program Files(x86)\ AMD APP \ include \作为附加包含目录
  2. 将C:\ Program Files(x86)\ AMD APP \ lib \ x86_64添加为附加库目录
  3. 将OpenCL.lib添加为附加依赖项
  4. 无论我是否采取最后两个步骤,我列出的错误都会发生。也就是说,最后两个似乎没有帮助或伤害任何东西

2 个答案:

答案 0 :(得分:3)

我在评论中提供的答案摘要:

  1. 对于C ++应用程序,您只需要#include <CL/cl.hpp>
  2. 确保使用正确的OpenCL.lib链接(32位与64位)。

答案 1 :(得分:3)

这是因为在OpenCL 1.2中不推荐使用clUnloadCompiler()

添加

#define CL_USE_DEPRECATED_OPENCL_1_1_APIS

之前的代码

#include <CL/cl.h>
#include <CL/cl.hpp>