2016-12-06 151 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

,並嘗試重新建立。