OpenCV undefined对`vtable for cv :: HOGDescriptor'的引用

时间:2015-06-12 11:34:00

标签: c++ eclipse opencv

我试图通过在Eclipse CDT上使用OpenCV 3 hog和svm来编译我自己的对象检测器,但是在编译控制台时会返回以下内容:

Building target: HogDetection
Invoking: GCC C++ Linker
g++ -L/usr/local/lib -o "HogDetection"  ./main.o ./phog.o ./psvm.o   -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_ml
./phog.o: In function `cv::HOGDescriptor::HOGDescriptor()':
/usr/local/include/opencv2/objdetect.hpp:348: undefined reference to `vtable for cv::HOGDescriptor'
./phog.o: In function `cv::HOGDescriptor::~HOGDescriptor()':
/usr/local/include/opencv2/objdetect.hpp:372: undefined reference to `vtable for cv::HOGDescriptor'
collect2: error: ld returned 1 exit status
make: *** [HogDetection] Error 1

我可能会对这些库做错了,但是因为我对c ++和OpenCV都很新,所以我按照教程设置了使用openCV的eclipse CDT,我能够运行其他简单的教程(那些在openCV网站上,比如显示图片......等。

我还在维基百科上阅读了关于vtable和这里的内容,但这还不足以让我理解这里发生了什么。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

我通过向gcc c ++链接库添加库opencv_objdetect

来解决了这个问题

答案 1 :(得分:1)

如果您正在使用make文件,那么只需添加
LIBS + = -L / usr / local / libs \           - lopencv_objdetect \

或者如果您没有makefile,那么只需运行类似的代码 g ++ -Wall main.cpp /usr/lib/libopencv_objdetect.a -o main