c++ - OpenCL 编译器错误 C4996

标签 c++ visual-studio-2012 opencl

我是 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命名空间。请注意,一旦您同时使用 clstd命名空间,您的代码将失败,因为突然有两个 vector 类发生碰撞。所以就说不吧!

关于c++ - OpenCL 编译器错误 C4996,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25315102/

相关文章:

visual-studio - Visual Studio 调试时出现极端滞后峰值

opencl - 如何获取 OpenCL 设备的内核数?

scientific-computing - OpenCL可以为您带来什么样的工作

c++ - DLL 中使用的全局变量

c++ - 为什么 linux 不能捕获 C++ 运行时错误,例如使用浅拷贝构造函数?

c++ - 在 ABBYY SDK 中获取字符边界框和置信度

c++ - 两个纳秒 chrono::time_points 之间的差异,但以秒为单位?

c++ - 无法在 Visual Studio 2012、Windows 8.1 中打开文件 opengl32.obj

visual-studio-2012 - 在 VS 2012 的 SQL Server 2012 数据库项目中创建 SQL 代理作业

c - 当我尝试增加矩阵大小时,在 AMD openCL/C 中实现矩阵 vector 乘法会导致系统卡住