2017-10-14 108 views
0

我使用C++在NetBeans 8.0上使用openCV 3.3.0在Ubuntu 16.10 LTS上構建OpenCV項目。_ZN4half5_eLutE未定義的OpenCV 3.3.0 build

編譯錯誤和警告免費。但是,在鏈接階段編譯失敗,因爲_ZN4half5_eLutE被視爲未定義。以下顯示鏈接過程和結果。

cd '/home/peter/NetBeansProjects/ApplyModelToSet' 

/usr/bin/make -f Makefile CONF=Debug 


"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf 


make[1]: Entering directory '/home/peter/NetBeansProjects/ApplyModelToSet' 


"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux/applymodeltoset 


make[2]: Entering directory '/home/peter/NetBeansProjects/ApplyModelToSet' 


mkdir -p dist/Debug/GNU-Linux 


g++ -o dist/Debug/GNU-Linux/applymodeltoset applymodeltoset.o build/Debug 
/GNU-Linux/_ext/73c876dd/colour.o build/Debug/GNU-Linux/_ext/73c876dd 
/correlation.o build/Debug/GNU-Linux/_ext/73c876dd/fft.o build/Debug/GNU- 
Linux/_ext/73c876dd/wirth.o build/Debug/GNU-Linux/_ext/73c876dd/xmlReader.o 
build/Debug/GNU-Linux/main.o -L../../lib -L/usr/lib/x86_64-linux-gnu 
-L../../xerces-c-3.1.4/src/.libs -L../../Downloads/opencv-3.3.0/build/lib 
/usr/lib/x86_64-linux-gnu/libpng.a -lxerces-c -lopencv_calib3d 
-lopencv_calib3d_pch_dephelp -lopencv_core -lopencv_core_pch_dephelp 
-lopencv_dnn -lopencv_dnn_pch_dephelp -lopencv_features2d 
-lopencv_features2d_pch_dephelp -lopencv_flann -lopencv_flann_pch_dephelp 
-lopencv_highgui -lopencv_highgui_pch_dephelp -lopencv_imgcodecs 
-lopencv_imgcodecs_pch_dephelp -lopencv_imgproc 
-lopencv_imgproc_pch_dephelp -lopencv_ml -lopencv_ml_pch_dephelp 
-lopencv_objdetect -lopencv_objdetect_pch_dephelp 
-lopencv_perf_calib3d_pch_dephelp -lopencv_perf_core_pch_dephelp 
-lopencv_perf_dnn_pch_dephelp -lopencv_perf_features2d_pch_dephelp 
-lopencv_perf_imgcodecs_pch_dephelp -lopencv_perf_imgproc_pch_dephelp 
-lopencv_perf_objdetect_pch_dephelp -lopencv_perf_photo_pch_dephelp 
-lopencv_perf_stitching_pch_dephelp -lopencv_perf_superres_pch_dephelp 
-lopencv_perf_video_pch_dephelp -lopencv_perf_videoio_pch_dephelp 
-lopencv_photo -lopencv_photo_pch_dephelp -lopencv_shape 
-lopencv_shape_pch_dephelp -lopencv_stitching 
-lopencv_stitching_pch_dephelp -lopencv_superres 
-lopencv_superres_pch_dephelp -lopencv_test_calib3d_pch_dephelp 
-lopencv_test_core_pch_dephelp -lopencv_test_dnn_pch_dephelp 
-lopencv_test_features2d_pch_dephelp -lopencv_test_flann_pch_dephelp 
-lopencv_test_highgui_pch_dephelp -lopencv_test_imgcodecs_pch_dephelp 
-lopencv_test_imgproc_pch_dephelp -lopencv_test_ml_pch_dephelp 
-lopencv_test_objdetect_pch_dephelp -lopencv_test_photo_pch_dephelp 
-lopencv_test_shape_pch_dephelp -lopencv_test_stitching_pch_dephelp 
-lopencv_test_superres_pch_dephelp -lopencv_test_video_pch_dephelp 
-lopencv_test_videoio_pch_dephelp -lopencv_test_videostab_pch_dephelp 
-lopencv_ts -lopencv_ts_pch_dephelp -lopencv_video 
-lopencv_video_pch_dephelp -lopencv_videoio -lopencv_videoio_pch_dephelp 
-lopencv_videostab -lopencv_videostab_pch_dephelp -ljpeg -lz -lIlmImf 
-lopencv_flann -pthread -lopencv_flann 



/usr/bin/ld: ../../lib/libopencv_imgcodecs.a(grfmt_exr.cpp.o): undefined reference to symbol '_ZN4half5_eLutE' 


//usr/lib/x86_64-linux-gnu/libHalf.so.12: error adding symbols: DSO missing from command line 


collect2: error: ld returned 1 exit status 


nbproject/Makefile-Debug.mk:102: recipe for target 'dist/Debug/GNU- Linux/applymodeltoset' failed 


make[2]: *** [dist/Debug/GNU-Linux/applymodeltoset] Error 1 


make[2]: Leaving directory '/home/peter/NetBeansProjects/ApplyModelToSet' 


nbproject/Makefile-Debug.mk:97: recipe for target '.build-conf' failed 


make[1]: *** [.build-conf] Error 2 


make[1]: Leaving directory '/home/peter/NetBeansProjects/ApplyModelToSet' 


nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed 


make: *** [.build-impl] Error 2 

據我所知,有在libopencv_flann.a定義幾個類似的字符串,但它是包括在內。

+1

我注意到'-lopencv_flann'出現在'-lopencv_imgcodecs'之前。如果後者依賴於前者,這可能會成爲問題。然後再一次,前者也出現兩次後。 – chris

+0

我試着把-lopencv_flann放到最後,但仍然得到了同樣的錯誤。謝謝, – OtagoHarbour

+1

你可以使用命令行進行編譯:'g ++ * .cpp -o test'pkg-config opencv --cflags --libs'-lpthread'?只是爲了確保你包含所有'.so'文件。 – zindarod

回答

0

我終於明白了。 _ZN4half5_eLutE不是OpenCV 3.3的一部分。/usr/lib/x86_64-linux-gnu包含來自早期版本OpenCV的庫。當我製作../../Downloads/opencv-3.3.0/build/lib第一個搜索目錄時,問題就消失了,因爲_ZN4half5_eLutE不再需要了。

相關問題