2016-10-18 4 views
-1

C++로 OpenCL2를 배우려고합니다. kubuntu 16.04.1 LTS 및 저장소의 beignet을 사용하고 있습니다. 내 노트북은 nvidia 또는 이와 유사한 인텔 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)을 추가하여 문제를 해결했다.

관련 문제