对cvCreateFileCapture的未定义引用

时间:2015-01-08 23:51:25

标签: c opencv

我正在关注opencv的教程,但是当我构建我的项目时,我收到一条错误消息:

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

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

    cvNamedWindow("Example2",CV_WINDOW_AUTOSIZE);
    CvCapture* capture = cvCreateFileCapture("code.avi");
    IplImage *frame;
while (1) {
    frame = cvQueryFrame(capture);
    if (!frame) break;
    cvShowImage("Example2",frame);
    char c = cvWaitKey(33);
    if (c == 27) break;
}

cvReleaseCapture(&capture);
cvDestroyWindow("Example2");

    return 0;
}

错误信息是:

...undefined reference to cvCreateFileCapture
...undefined reference to cvQueryFrame
...undefined reference to cvReleaseCapture

1 个答案:

答案 0 :(得分:0)

您可能只是忘记命令编译器链接提供这些功能的库。执行的库的名称可能取决于您使用的OpenCV版本。对于OpenCV 3.0,请尝试链接lib videoio

通过在安装了OpenCV库的文件夹中使用grep cvSomeFunction *.so,您可以安全地找出哪个库提供了您的功能。为了更加确定,请执行nm someOpenCVLib.so | grep cvSomeFunction并查看“T”输出,该输出告诉您库提供此功能:

00013570 T cvSomeFunction