簡體   English   中英

ld找不到opencv highgui符號(未定義參考)

[英]ld can't find opencv highgui symbols (undefined reference)

我有一個可以在計算機上正確編譯和運行的程序,並且試圖在另一台類似的計算機上運行它:相同的OS(Debian Stretch),安裝的相同相關軟件包以及相同版本的opencv(libopencv-dev版本:2.4.9.1) + dfsg-2)。 但是,在第二台計算機上,ld無法鏈接opencv highgui符號:

$ g++ $(pkg-config --cflags opencv) SDLTest.c $(pkg-config --libs opencv) -l pthread -L/usr/lib/x86_64-linux-gnu -lSDL
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -O3 /tmp/ccbTuxi1.o : Dans la fonction « opencv_calibrate(cv::VideoCapture) » :
SDLTest.c:(.text+0x33d3) : référence indéfinie vers « cv::namedWindow(std::string const&, int) »
SDLTest.c:(.text+0x3416) : référence indéfinie vers « cv::setMouseCallback(std::string const&, void (*)(int, int, int, int, void*), void*) »
SDLTest.c:(.text+0x3570) : référence indéfinie vers « cv::imshow(std::string const&, cv::_InputArray const&) »
SDLTest.c:(.text+0x36e0) : référence indéfinie vers « cv::destroyWindow(std::string const&) » collect2: error: ld returned
1 exit status

安裝了所有相應的軟件包(libopencv- *和libhighgui- *)。 ldconfig查找.so文件:

$ sudo ldconfig -v 2>/dev/null | grep highgui   libopencv_highgui.so.2.4
-> libopencv_highgui.so.2.4.9

並且文件存在:

$ locate libopencv_highgui.so.2.4.9
/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9

整個代碼中都有很多對opencv的引用,但是由於某些原因,highgui函數是唯一會引起麻煩的函數。

在我的代碼中,我包含了C頭文件(出於某些原因,它們可以包含C ++ API):

#include <cv.h>
#include <cvaux.h>
#include <highgui.h>

而使用C ++標頭則不會更改任何內容。

我沒主意了。 任何想法?

編輯:pkg-config --libs opencv的輸出:

/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so -lopencv_calib3d /usr/lib/x86_64-linux-gnu/libopencv_contrib.so -lopencv_contrib /usr/lib/x86_64-linux-gnu/libopencv_core.so -lopencv_core /usr/lib/x86_64-linux-gnu/libopencv_features2d.so -lopencv_features2d /usr/lib/x86_64-linux-gnu/libopencv_flann.so -lopencv_flann /usr/lib/x86_64-linux-gnu/libopencv_gpu.so -lopencv_gpu /usr/lib/x86_64-linux-gnu/libopencv_highgui.so -lopencv_highgui /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so -lopencv_imgproc /usr/lib/x86_64-linux-gnu/libopencv_legacy.so -lopencv_legacy /usr/lib/x86_64-linux-gnu/libopencv_ml.so -lopencv_ml /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so -lopencv_objdetect /usr/lib/x86_64-linux-gnu/libopencv_ocl.so -lopencv_ocl /usr/lib/x86_64-linux-gnu/libopencv_photo.so -lopencv_photo /usr/lib/x86_64-linux-gnu/libopencv_stitching.so -lopencv_stitching /usr/lib/x86_64-linux-gnu/libopencv_superres.so -lopencv_superres /usr/lib/x86_64-linux-gnu/libopencv_ts.so -lopencv_ts /usr/lib/x86_64-linux-gnu/libopencv_video.so -lopencv_video /usr/lib/x86_64-linux-gnu/libopencv_videostab.so -lopencv_videostab

因此,我最終在QT支持下自己編譯了opencv來解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM