我是 opencl 域的新手。我已经阅读了一些书籍并尝试编译以下代码
#define __CL_ENABLE_EXCEPTIONS
#define __NO_STD_VECTOR
#define PROGRAM_FILE "blank.cl"
#define KERNEL_FUNC "blank"
//#define __MAX_DEFAULT_VECTOR_SIZE 100
#include <cstdio>
#include <fstream>
#include <iostream>
#include <iterator>
#ifdef Windows
#include <OpenCL/cl.hpp>
#else
#include <CL/cl.hpp>
#endif
using namespace std;
using namespace cl;
int main() {
// int n = 10;
vector<Platform> platforms;
vector<Device> devices;
try {
} catch (exception e) {
}
return 0;
}
但它给了我很多错误。
大部分如下
Error 14 error C4996: 'cl::vector<char *,10>': was declared deprecated C:\Program Files (x86)\AMD APP SDK\2.9\include\CL\cl.hpp 1138 1 Matrix_multilpy_C
所以任何人都可以帮助我。我正在使用 visual studio 2013 进行编码,我发现我的版本是 openCL 1.2
谢谢。
最佳答案
这很简单:cl
命名空间提供了一个 vector
类,由于使用 using namespace cl;
而选择的.
删除那行,#include <vector>
, 删除 __NO_STD_VECTOR
定义并简单地使用 std::vector<cl::Device>
, std::vector<cl::Platform>
. std::vector
做一切需要做的事;出于某种原因,OpenCL header 过去常常附带一个自定义 vector 类,不应再使用它(我不知道为什么首先要添加它。)
你不应该使用 std
命名空间。请注意,一旦您同时使用 cl
和 std
命名空间,您的代码将失败,因为突然有两个 vector 类发生碰撞。所以就说不吧!
关于c++ - OpenCL 编译器错误 C4996,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25315102/