无法从OpenCL C++;绑定文档(cl2.hpp) 我试图用C++学习OpenCL2。 我正在使用库中的kubuntu 16.04.1 LTS和beignet。 我的笔记本电脑是一台联想电脑,配有英特尔i5-5200U,没有nvidia或类似产品。 命令clinfo识别平台。 我在示例中发现的第一个bug是未声明的变量output2,我试图对其进行注释,但仍然得到许多链接错误。。。 例如

无法从OpenCL C++;绑定文档(cl2.hpp) 我试图用C++学习OpenCL2。 我正在使用库中的kubuntu 16.04.1 LTS和beignet。 我的笔记本电脑是一台联想电脑,配有英特尔i5-5200U,没有nvidia或类似产品。 命令clinfo识别平台。 我在示例中发现的第一个bug是未声明的变量output2,我试图对其进行注释,但仍然得到许多链接错误。。。 例如,c++,opencl,C++,Opencl,这是一个再现部分链路错误的最小示例: main.cpp: // Defines the target OpenCL runtime version to build the header against. // Defaults to 200, representing OpenCL 2.0. #define CL_HPP_TARGET_OPENCL_VERSION 200 #include <CL/cl2.hpp> int main() { return 0; } 我

这是一个再现部分链路错误的最小示例:

main.cpp:

// Defines the target OpenCL runtime version to build the header against.
// Defaults to 200, representing OpenCL 2.0.
#define CL_HPP_TARGET_OPENCL_VERSION 200

#include <CL/cl2.hpp>

int main()
{
    return 0;
}
我使用KDevelop,在尝试编译此代码时得到以下输出:

/home/deglans/ExampleOpenCL2/build> make -j2 mytests
Scanning dependencies of target mytests
[ 50%] Building CXX object CMakeFiles/mytests.dir/main2.cpp.o
[100%] Linking CXX executable mytests
CMakeFiles/mytests.dir/main2.cpp.o: In function `cl::detail::ReferenceHandler<_cl_device_id*>::release(_cl_device_id*)':
/usr/include/CL/cl2.hpp:1438: undefined reference to `clReleaseDevice'
CMakeFiles/mytests.dir/main2.cpp.o: In function `cl::detail::ReferenceHandler<_cl_context*>::release(_cl_context*)':
/usr/include/CL/cl2.hpp:1473: undefined reference to `clReleaseContext'
CMakeFiles/mytests.dir/main2.cpp.o: In function `cl::detail::ReferenceHandler<_cl_command_queue*>::release(_cl_command_queue*)':
/usr/include/CL/cl2.hpp:1482: undefined reference to `clReleaseCommandQueue'
collect2: error: ld returned 1 exit status
CMakeFiles/mytests.dir/build.make:94: recipe for target 'mytests' failed
make[3]: *** [mytests] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/mytests.dir/all' failed
make[2]: *** [CMakeFiles/mytests.dir/all] Error 2
CMakeFiles/Makefile2:116: recipe for target 'CMakeFiles/mytests.dir/rule' failed
make[1]: *** [CMakeFiles/mytests.dir/rule] Error 2
Makefile:175: recipe for target 'mytests' failed
make: *** [mytests] Error 2
*** Errore: Codice di uscita 2 ***
/home/deglans/ExampleOpenCL2/build>make-j2 mytests
扫描目标mytests的依赖项
[50%]构建CXX对象cmakfiles/mytests.dir/main2.cpp.o
[100%]链接CXX可执行文件mytests
CMakeFiles/mytests.dir/main2.cpp.o:在函数'cl::detail::ReferenceHandler::release(_cl\u device\u id*)中:
/usr/include/CL/cl2.hpp:1438:对“clReleaseDevice”的未定义引用
CMakeFiles/mytests.dir/main2.cpp.o:在函数'cl::detail::ReferenceHandler::release(_cl_context*)中:
/usr/include/CL/cl2.hpp:1473:对“clReleaseContext”的未定义引用
CMakeFiles/mytests.dir/main2.cpp.o:在函数'cl::detail::ReferenceHandler::release(_cl_command_queue*)中:
/usr/include/CL/cl2.hpp:1482:对“clReleaseCommandQueue”的未定义引用
collect2:错误:ld返回了1个退出状态
CMakeFiles/mytests.dir/build.make:94:目标“mytests”的配方失败
生成[3]:***[mytests]错误1
CMakeFiles/Makefile2:104:目标“CMakeFiles/mytests.dir/all”的配方失败
生成[2]:***[CMakeFiles/mytests.dir/all]错误2
CMakeFiles/Makefile2:116:目标“CMakeFiles/mytests.dir/rule”的配方失败
生成[1]:***[CMakeFiles/mytests.dir/rule]错误2
Makefile:175:目标“mytests”的配方失败
make:**[mytests]错误2
***错误:Codice di uscita 2***

我已经通过在CMakeLists.txt文件中添加
目标链接库(例如OpenCL2 OpenCL)
解决了这个问题。

您是针对OpenCL库进行链接的吗?请发一封信。此外,OpenCL C++绑定让我很难过。
/home/deglans/ExampleOpenCL2/build> make -j2 mytests
Scanning dependencies of target mytests
[ 50%] Building CXX object CMakeFiles/mytests.dir/main2.cpp.o
[100%] Linking CXX executable mytests
CMakeFiles/mytests.dir/main2.cpp.o: In function `cl::detail::ReferenceHandler<_cl_device_id*>::release(_cl_device_id*)':
/usr/include/CL/cl2.hpp:1438: undefined reference to `clReleaseDevice'
CMakeFiles/mytests.dir/main2.cpp.o: In function `cl::detail::ReferenceHandler<_cl_context*>::release(_cl_context*)':
/usr/include/CL/cl2.hpp:1473: undefined reference to `clReleaseContext'
CMakeFiles/mytests.dir/main2.cpp.o: In function `cl::detail::ReferenceHandler<_cl_command_queue*>::release(_cl_command_queue*)':
/usr/include/CL/cl2.hpp:1482: undefined reference to `clReleaseCommandQueue'
collect2: error: ld returned 1 exit status
CMakeFiles/mytests.dir/build.make:94: recipe for target 'mytests' failed
make[3]: *** [mytests] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/mytests.dir/all' failed
make[2]: *** [CMakeFiles/mytests.dir/all] Error 2
CMakeFiles/Makefile2:116: recipe for target 'CMakeFiles/mytests.dir/rule' failed
make[1]: *** [CMakeFiles/mytests.dir/rule] Error 2
Makefile:175: recipe for target 'mytests' failed
make: *** [mytests] Error 2
*** Errore: Codice di uscita 2 ***