OpenCL编译器错误C4996

时间:2014-08-14 18:27:28

标签: c++ visual-studio-2012 opencl

我是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;
}

但它给了我很多错误。

其中大部分如下

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

感谢。

1 个答案:

答案 0 :(得分:6)

这非常简单:cl命名空间提供了vector课程,由于您使用了using namespace cl;,您正在学习这个课程。

删除该行#include <vector>,删除__NO_STD_VECTOR定义,然后只使用std::vector<cl::Device>std::vector<cl::Platform>std::vector做了所需的一切;出于某种原因,OpenCL标头用于附带自定义矢量类,不应再使用它(我不知道为什么它实际上是首先添加的。)

您也不应该使用std命名空间。请注意,一旦您同时使用clstd命名空间,您的代码将会失败,因为突然会有两个矢量类冲突。所以请说不!