2016-12-06 185 views
4

我想在我的Ubuntu 16.04上安装OpenCV3.1以便在QT5中进行开发。令人遗憾的是,由于未定义的引用(见下文),始终由源构建它。在Ubuntu 16.04上构建OpenCV 3.1失败(未定义的参考)

我用下面的:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_FFMPEG=ON -D WITH_OPENGL=ON -D BUILD_TIFF=ON -D WITH_VTK=ON.. 

,它工作正常。但构建它总是会产生这个错误

../../lib/libopencv_viz.so.3.1.0: undefined reference to `vtkSTLReader::New()' 
../../lib/libopencv_viz.so.3.1.0: undefined reference to `vtkOBJReader::New()' 
collect2: error: ld returned 1 exit status 
modules/viz/CMakeFiles/opencv_test_viz.dir/build.make:232: recipe for target 'bin/opencv_test_viz' failed 
make[2]: *** [bin/opencv_test_viz] Error 1 
CMakeFiles/Makefile2:3358: recipe for target 'modules/viz/CMakeFiles/opencv_test_viz.dir/all' failed 
make[1]: *** [modules/viz/CMakeFiles/opencv_test_viz.dir/all] Error 2 
make[1]: *** Waiting for unfinished jobs.... 

当然我GOOGLE了,并尝试了我发现的一切。尝试了几个不同的cmake标志(或者更确切地说,没有任何),试着重新安装libvtk5-dev,并尝试libvtk6-dev,甚至从源代码构建vtk7.1,因为我假设从那里丢失了一些东西。

我也试图通过

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_FFMPEG=ON -D WITH_OPENGL=ON -D BUILD_TIFF=ON -D WITH_VTK=ON -D BUILD_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/user/opencv/opencv-3.1.0/opencv_contrib/modules .. 

加入opencv_contrib但已经产生以下错误

CMake Error at opencv_contrib/modules/text/CMakeLists.txt:22 (ocv_add_testdata): `Unknown CMake command "ocv_add_testdata". 

同时请注意,我并升级/更新列出herehere的所有软件包

所以基本上两天后随机尝试所有可能的解决方案,我可以通过谷歌找到,我我现在在这里问。 希望有人知道如何解决这个问题,谢谢!

编辑:我只得到OpenCV3.1的这些问题。我确实有一个工作OpenCV 2.4.13

+0

这个问题似乎与VTK有关,它不会出现在您发布的软件包链接中。你可以用'-D WITH_VTK = OFF'来构建,还是安装vtk ?.同时用'QT'和'VTK'编译PS可能会导致并发症:http://answers.opencv.org/question/61773/vtk-support-disabled-due-to-incompatible-opencvvtkqt-combination/ – iamai

回答

0

与我发生同样的事情。它正在工作,突然间我得到了同样的错误。我重新推出了OpenCV 3.1,它再次运行。

看来,这些家伙更新了额外模块和OpenCV中的东西,并且您只需拉出额外的模块即可。

0

对于第二部分,它看起来就像是有人搞砸opencv_contrib/modules/text/CMakeLists.txt

只要编辑这个文件,并在年底卸下线:

ocv_add_testdata(samples/ contrib/text 
    FILES_MATCHING PATTERN "*.xml" PATTERN "*.xml.gz" REGEX "scenetext[0-9]+.jpg" 
    COMPONENT "tests" 
) 
+0

我做了你所说的,似乎正在为我工​​作。顺便说一句,事后会有什么影响吗?我的意思是,在编辑之后,我的contrib模块能够正常工作吗? –

0

只需切换opencv_contrib库来3.1.0标签克隆后。

git checkout 3.1.0

,并尝试重新建立。