2015-04-02 55 views
0

我打算運行一個簡單的OpenCV代碼,但不幸的是我得到一個undefined reference錯誤。我真的不知道該怎麼做。這是我試圖使其運行由於未定義的引用而無法編譯?

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace cv; 

int main(int argc, char** argv) { 

    Mat image; 

    image = imread(argv[1], 1); 
    //... 
    return 0; 
} 

代碼這是Eclipse輸出:基本上是這樣說的:undefined reference to cv::imread(cv::String const&, int)'

完整的錯誤信息是:

g++ -L/usr/local/lib -o "TestOpenCV" ./src/TestOpenCV.o -lopencv_core -lopencv_highgui 
./src/TestOpenCV.o: In function `main': 
/media/cip/Media/workspace/OpenCV/TestOpenCV/Debug/../src/TestOpenCV.cpp:21: undefined reference to cv::imread(cv::String const&, int) collect2: error: ld returned 1 exit status make: *** [TestOpenCV] Error 1 

而且pkg-config opencv --libs的列表輸出如下所示:

/usr/local/lib/libopencv_calib3d.so 
/usr/local/lib/libopencv_core.so 
/usr/local/lib/libopencv_features2d.so 
/usr/local/lib/libopencv_flann.so 
/usr/local/lib/libopencv_highgui.so 
/usr/local/lib/libopencv_imgcodecs.so 
/usr/local/lib/libopencv_imgproc.so 
/usr/local/lib/libopencv_ml.so 
/usr/local/lib/libopencv_objdetect.so 
/usr/local/lib/libopencv_photo.so 
/usr/local/lib/libopencv_shape.so 
/usr/local/lib/libopencv_stitching.so 
/usr/local/lib/libopencv_superres.so 
/usr/local/lib/libopencv_ts.a 
/usr/local/lib/libopencv_video.so 
/usr/local/lib/libopencv_videoio.so 
/usr/local/lib/libopencv_videostab.so 
/usr/local/lib/libopencv_viz.so 

回答

1

已經有similar question了。嘗試將

-lopencv_imgcodecs 

添加到鏈接器標誌列表。

1

undefin ed引用錯誤會導致「無效的lib路徑」。 請確保您輸入有效的lib路徑: 他們應該有擴展名「.lib」或「.a」 希望它有幫助。

相關問題