2016-10-18 4 views
-1

OpenCL2をC++で学習しようとしています。 私はkubuntu 16.04.1 LTSとリポジトリからbeignetを使用しています。 私のラップトップは、nvidiaなどのないIntel i5-5200Uを搭載したlenovoです。 コマンドclinfoはプラットフォームを認識します。私は一例で見つかった 最初のバグは、私はそれをコメントし、それでも多くのリンクエラーを取得しようとしたと宣言されていない変数output2です... の例では、これは、最小限の例です。このhttp://github.khronos.org/OpenCL-CLHPP/index.html#exampleOpenCLの例をコンパイルできないC++バインディングのドキュメント(cl2.hpp)

でありますリンクエラーの一部を再現:

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; 
} 

CMakeLists.txt:

cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) 

set(CMAKE_CXX_STANDARD 11) # C++11... 
set(CMAKE_CXX_STANDARD_REQUIRED ON) #...is required... 
set(CMAKE_CXX_EXTENSIONS OFF) #...without compiler extensions like gnu++11 

project(exampleopencl2) 

add_executable(exampleopencl2 main.cpp) 

install(TARGETS exampleopencl2 RUNTIME DESTINATION bin) 

私は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 *** 
+1

あなたはOpenCLライブラリとリンクしていますか? [mcve]を投稿してください。また、OpenCL C++バインディングは私を悲しくします。 –

答えて

0

私はCMakeLists.txtファイルにtarget_link_libraries(exampleopencl2 OpenCL)を追加することで問題を解決しました。

関連する問題