使用clCreateEventFromGLsyncKHR扩展函数时发生链接错误
Link error when using clCreateEventFromGLsyncKHR extension function
我最近开始将OpenCL集成到我的OpenGL应用程序中,该应用程序渲染一个基本的粒子系统,两者之间的基本互操作(没有事件)运行良好。然而,为了提高性能,我尝试使用clCreateEventFromGLsyncKHR
函数,而不必调用glFinish
和clFinish
,我无法获得正在运行的程序,因为程序会抱怨以下错误:
error LNK2019: unresolved external symbol _clCreateEventFromGLsyncKHR
我已经尝试使用所提供的两个函数来获得扩展函数指针(clGetExtensionFunctionAddressForPlatform
、clGetExtensionFunctionAddress
),但由于我无法理解的原因,我无法使其工作。
样本代码:
#include <CL/cl_gl_ext.h>
typedef cl_event (*PFNCLCREATEEVENTFROMGLSYNCKHR) (cl_context context, cl_GLsync sync, cl_int *errcode_ret);
PFNCLCREATEEVENTFROMGLSYNCKHR clCreateEventFromGLsyncKHR = (PFNCLCREATEEVENTFROMGLSYNCKHR)clGetExtensionFunctionAddressForPlatform(opencl::target::inst()->platform(), "clCreateEventFromGLsyncKHR");
GLsync sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
cl_event gl_event = clCreateEventFromGLsyncKHR(opencl::contexts["GL_CL_context"]->_get(), sync, NULL );
有人能帮助我了解我哪里出了问题吗?
对于感兴趣的人:
Name: GeForce GT 740M
Vendor: NVIDIA Corporation
Device OpenCL C version: OpenCL C 1.1
Driver version: 327.23
Profile: FULL_PROFILE
Version: OpenCL 1.1 CUDA
Extensions: cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options
cl_nv_device_attribute_query cl_nv_pragma_unroll cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics
cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64
更新如果我使用的设备支持cl_khr_gl_event扩展
您的设备不支持cl_khr_gl_event
扩展。使用clCreateEventFromGLsyncKHR
方法需要该扩展。如前所述。通常,作为扩展结束/启动一部分的所有方法的名称中都有KHR/NV/AMD。
代码的另一个问题是,您无论如何都没有启用扩展,您必须定义以下内容:
#include <CL/cl_gl_ext.h>
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- Visual Studio mkl_link_tool.exe链接错误
- C++ 实现模板单例类时出现链接错误
- 使用类模板的方法链接错误
- MySQL C++连接器链接错误
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 运行 C++ 单元测试时LNK2005链接错误
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 链接错误,包括我创建的相同头文件 - C++
- 在Embarcadero C++ Builder中生成的DLL未解决的外部链接错误
- 使用标头保护的多个定义链接错误
- 链接错误:未定义对 stdscr 和 wgetch 的引用
- 使用 Vivek 的 Vcam / 捕获源过滤器构建/链接错误
- 升压program_options中的链接错误
- 使用 g++ 预处理器进行替换会导致链接错误
- 在调试配置中编译工作正常,但发布会给出链接错误
- 相邻矩阵设置链接错误
- 包含常量变量并包含在多个文件中的标头的链接错误
- C++链接错误,我理解但无法解决
- 是什么导致macOS Mojave上的GoogleTest链接错误