仅为clCreateFromGLTexture链接错误

时间:2012-06-21 07:58:11

标签: opencl

我试图允许OpenCL渲染到2D纹理。我第一次遇到函数clCreateFromGLTexture2D。我写了它,但是当我去编译时,我发现它没有被定义。我最终在“cl_gl.h”中找到了它:

#ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS
#warning CL_USE_DEPRECATED_OPENCL_1_1_APIS is defined. These APIs are unsupported and untested in OpenCL 1.2!
    extern CL_API_ENTRY cl_mem CL_API_CALL
    clCreateFromGLTexture2D(cl_context      /* context */,
                            cl_mem_flags    /* flags */,
                            cl_GLenum       /* target */,
                            cl_GLint        /* miplevel */,
                            cl_GLuint       /* texture */,
                            cl_int *        /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;

    extern CL_API_ENTRY cl_mem CL_API_CALL
    clCreateFromGLTexture3D(cl_context      /* context */,
                            cl_mem_flags    /* flags */,
                            cl_GLenum       /* target */,
                            cl_GLint        /* miplevel */,
                            cl_GLuint       /* texture */,
                            cl_int *        /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
#endif /* CL_USE_DEPRECATED_OPENCL_1_2_APIS */

所以,我在“cl_gl.h”的其他地方看了一下,我找到了clCreateFromGLTexture。为了向前兼容,我将其写入代码中。但是,函数clCreateFromGLTexture会导致LNK2019(未解析的外部)。我觉得这很可疑,因为我在使用clCreateFromGLBufferclCreateFromGLRenderbuffer时可以编译,而且这两个都在“cl_gl.h”中。

所以,我的问题:为什么clCreateFromGLTexture没有定义,而在同一个模块旁边的函数呢?我目前正在链接“OpenCL.lib”。还有什么我需要的吗?我没有看到任何东西。这是库本身的问题吗?

[编辑:clGetDeviceInfo(device_id,CL_DEVICE_IMAGE_SUPPORT,sizeof(cl_bool),& result,NULL);是CL_TRUE,因为它的价值。]

谢谢,

2 个答案:

答案 0 :(得分:3)

尝试将OpenCL库更新到最新版本(1.2)。

clCreateFromGLTexture被定义为OpenCL 1.2标准的一部分,而clCreateFromGLTexture2DclCreateFromGLTexture3D是OpenCL 1.0的一部分。如果您的OpenCL库不是最新的,您将收到一个未定义的错误。

答案 1 :(得分:0)

即使我遇到了这个错误,我也很难解决它。我想你正在使用VS2010。 这可能由于以下原因而发生:

  1. 您尚未在项目属性中包含对库的引用 - >链接器 - >输入 - >其他库依赖项

  2. 您已将解决方案编译为32位并使用64位库文件,反之亦然。

  3. 检查出来。