如何在CentOS中链接OpenCV库

时间:2018-06-19 12:04:56

标签: c++ opencv

我在编译测试文件时遇到此错误:

undefined reference to cv::imread(cv::String const&, int)
undefined reference to cv::imshow(cv::String const&, cv::_InputArray const&)

我的代码是:

#include <opencv2/opencv.hpp>

int ImageShow() {
    const char* filename = "/home/users/wuchang.li/000001.jpg";
    cv::Mat src = cv::imread(filename, CV_LOAD_IMAGE_GRAYSCALE);
    cv::imshow("src", src);
    cv::waitKey();
    return 0;
}
int main(){
        ImageShow();
        return 0;
}

我尝试了几种方法:

我用过:

g++ test.cpp -o getmask `pkg-config opencv --cflags --libs`

然后使用:

g++ test.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect

我无权修改文件/etc/ld.so.conf.d/opencv.conf

我确定我的包含路径和lib路径正确。

1 个答案:

答案 0 :(得分:2)

使用链接器-L标志时,表示共享库位于非标准位置。该标志使其成为链接,但是运行时链接程序ld.so找不到共享库。

链接共享库时,与-L<dir>一起使用-Wl,-rpath=<dir>

请勿使用LD_LIBRARY_PATH,有关更多详细信息,请参见LD_LIBRARY_PATH considered harmful

在编译时,请始终使用-Wall -Wextra -Werror来防止在编译时出现错误。