opencv / opencv_contrib

Repository for OpenCV's extra modules
Apache License 2.0
9.3k stars 5.74k forks source link

Error compiling rgbd #3596

Open du-xinyi opened 9 months ago

du-xinyi commented 9 months ago

In cmake, select with_opengl=on,my qt version is 6.5.3. The following error occurred at compile time

/usr/bin/ld: CMakeFiles/opencv_rgbd.dir/src/dynafu.cpp.o: in function cv::dynafu::DynaFuImpl<cv::Mat>::DynaFuImpl(cv::kinfu::Params const&)': dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x3ec): undefined reference toglGenRenderbuffersEXT' /usr/bin/ld: dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x3f9): undefined reference to glBindRenderbufferEXT' /usr/bin/ld: dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x410): undefined reference toglRenderbufferStorageEXT' /usr/bin/ld: dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x41e): undefined reference to glGenFramebuffersEXT' /usr/bin/ld: dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x42b): undefined reference toglBindFramebufferEXT' /usr/bin/ld: dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x442): undefined reference to glFramebufferRenderbufferEXT' /usr/bin/ld: dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x450): undefined reference toglGenRenderbuffersEXT' /usr/bin/ld: dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x45d): undefined reference to glBindRenderbufferEXT' /usr/bin/ld: dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x474): undefined reference toglRenderbufferStorageEXT' /usr/bin/ld: dynafu.cpp:(.text._ZN2cv6dynafu10DynaFuImplINS_3MatEEC2ERKNS_5kinfu6ParamsE[_ZN2cv6dynafu10DynaFuImplINS_3MatEEC5ERKNS_5kinfu6ParamsE]+0x48b): undefined reference to `glFramebufferRenderbufferEXT' collect2: error: ld returned 1 exit status make[2]: *** [modules/rgbd/CMakeFiles/opencv_rgbd.dir/build.make:505: lib/libopencv_rgbd.so.4.8.1] Error 1

Undefined call function is in opencv_contrib/modules/rgbd/src/dynafu.cpp

remmel commented 7 months ago

when calling cmake try to add -DOpenGL_GL_PREFERENCE=LEGACY

jiapei100 commented 3 months ago

Yes.... A straight-forward solution is just to Turn OFF rgbd... Thank you ...

asmorkalov commented 1 month ago

I made experiments with Ubuntu 18.04, 20.04 and 24.04. Only Ubuntu 24.04 provides QT6 package (6.4.2). All the combinations were built just fine and passed tests. Looks like your QT build is not complete.