我正在尝试编译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
其他详情(删除#include&lt; CL / c.h&gt;后)
现在提供以下错误列表:
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)
在我的项目的属性中,我有:
无论我是否采取最后两个步骤,我列出的错误都会发生。也就是说,最后两个似乎没有帮助或伤害任何东西
答案 0 :(得分:3)
我在评论中提供的答案摘要:
#include <CL/cl.hpp>
答案 1 :(得分:3)
这是因为在OpenCL 1.2中不推荐使用clUnloadCompiler()
。
添加
#define CL_USE_DEPRECATED_OPENCL_1_1_APIS
之前的代码
#include <CL/cl.h>
#include <CL/cl.hpp>