我在编译测试文件时遇到此错误:
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路径正确。
答案 0 :(得分:2)
使用链接器-L
标志时,表示共享库位于非标准位置。该标志使其成为链接,但是运行时链接程序ld.so
找不到共享库。
链接共享库时,与-L<dir>
一起使用-Wl,-rpath=<dir>
。
请勿使用LD_LIBRARY_PATH
,有关更多详细信息,请参见LD_LIBRARY_PATH considered harmful。
在编译时,请始终使用-Wall -Wextra -Werror
来防止在编译时出现错误。