C++ 空openCL程序抛出弃用警告

C++ 空openCL程序抛出弃用警告,c++,opencl,C++,Opencl,我下载了AMD应用程序3.0 SDK,一旦我将#include包含到我的cpp中,它就会抛出弃用警告: 1>c:\program files (x86)\amd app sdk\3.0\include\cl\cl.hpp(4240): warning C4996: 'clCreateSampler': was declared deprecated 还有更多 我做错什么了吗?在编写一行有用的代码之前,我开始使用openCL已经有这么多警告,我感到很不舒服。这里的问题是cl.h

我下载了AMD应用程序3.0 SDK,一旦我将
#include
包含到我的cpp中,它就会抛出弃用警告:

1>c:\program files (x86)\amd app sdk\3.0\include\cl\cl.hpp(4240): warning 
     C4996: 'clCreateSampler': was declared deprecated
还有更多


我做错什么了吗?在编写一行有用的代码之前,我开始使用openCL已经有这么多警告,我感到很不舒服。

这里的问题是
cl.hpp
是针对openCL 1.X平台的,但是AMD的SDK的其余部分支持openCL 2.0。opencl2.0中不推荐使用
clCreateSampler
函数

KHRONOSs发布了一个OpenCL 2版本的C++绑定-<代码> CL2.Hpp——这是你希望使用C++ API为OpenCL 2设备提供目标时应该使用的版本。它可能尚未传播到供应商SDK,但您可以获得最新版本。要使用此标题以OpenCL 2.0为目标,您可以如下所示:

#define CL_HPP_TARGET_OPENCL_VERSION 200
#include <CL/cl2.hpp>
(这将抑制您以前收到的弃用警告)

对于1.X平台,您仍然可以使用1.X标题(
cl.hpp
);您只需明确说明,弃用警告不是您的问题:

#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
#include <CL/cl.hpp>
\define CL\u USE\u不推荐的\u OPENCL\u 1\u 2\u API
#包括

为什么不习惯呢?Khronos最近在github上安装了cl.hpp,这样你就可以自己修复它了!从
cl.hpp
切换到
cl2.hpp
头在我的英特尔OpenCL SDK上打开了一个
LNK2005
错误:
enum cl::QueueProperties uu cdecl cl::operator |(enum cl::QueueProperties,enum cl::QueueProperties)。。。。。。已在opencl_ops-tester.obj中定义此问题应在几个月前修复,您是否使用此处提供的最新cl2.hpp?
#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
#include <CL/cl.hpp>