Kas*_*sun 1 c++ opencl visual-studio-2012
我是opencl domian的新手.我已阅读了一些书籍并尝试编译以下代码
#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;
}
Run Code Online (Sandbox Code Playgroud)
但它给了我很多错误.
其中大多数如下
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
Run Code Online (Sandbox Code Playgroud)
那么任何人都可以帮助我.我使用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标头用于附带自定义矢量类,不应该再使用它(我不知道为什么它实际上是首先添加的.)
您也不应该使用std命名空间.请注意,一旦您同时使用命名空间cl和std命名空间,您的代码就会失败,因为突然会有两个矢量类冲突.所以说不!