3

我正在尝试使用 OpenCL 的 AMD 实现编写一个 Hello World 应用程序。 http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/introductory-tutorial-to-opencl/

我已经设置了目录、库等,如此处

以下编译:

#include "stdafx.h"
#include <CL/cl.h>

int _tmain(int argc, _TCHAR* argv[])
{
    cl_platform_id test;
    cl_uint num;
    cl_uint ok = 1;
    clGetPlatformIDs(ok, &test, &num);

    return 0;

}

然而,

#include "stdafx.h"

#include <utility>
#include <CL/cl.hpp>


int _tmain(int argc, _TCHAR* argv[])
{
    cl::vector< cl::Platform > platformList;

    return 0;
}

才不是。

我收到以下错误:

Error   1   error C2039: 'vector' : is not a member of 'cl' D:\Documents\Projects\Visual Studio\C++\cl_helloworld\cl_helloworld\cl_helloworld.cpp   12  1   cl_helloworld
Error   2   error C2065: 'vector' : undeclared identifier   D:\Documents\Projects\Visual Studio\C++\cl_helloworld\cl_helloworld\cl_helloworld.cpp   12  1   cl_helloworld
Error   3   error C2275: 'cl::Platform' : illegal use of this type as an expression D:\Documents\Projects\Visual Studio\C++\cl_helloworld\cl_helloworld\cl_helloworld.cpp   12  1   cl_helloworld
Error   4   error C2065: 'platformList' : undeclared identifier D:\Documents\Projects\Visual Studio\C++\cl_helloworld\cl_helloworld\cl_helloworld.cpp   12  1   cl_helloworld

IntelliSense 下划线vector< cl::Platform > platformList,当我输入 cl:: 时,我看不到向量类。

编辑

如果我手动将 cl.hpp 的内容复制到 main.cpp,我在 IntelliSense 中看到了向量,但仍然无法编译项目。

4

1 回答 1

6

改为使用std::vector<cl:XXXX>。这就是我使用的,atm 完全没有问题,而且我有非常复杂的 OpenCL C++ 应用程序。

您还可以cl::vector通过在#include <cl.hpp> #define __NO_STD_VECTOR. 但我不推荐它,因为它的功能比标准差。

示例: 如果您有事件向量,则在 std 您可以有选择地删除事件。但是在 cl::vector 中,您必须手动完成。

于 2013-11-08T15:03:59.833 回答