报错解决:找不到OpenCV头文件或者找到但是报错undefined reference
/tmp/tmpxft_00001e36_00000000-11_main_cuda.o: In function
Solver(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)': tmpxft_00001e36_00000000-6_main_cuda.cudafe1.cpp:(.text+0x209b): undefined reference to
cv::imread(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int)’
tmpxft_00001e36_00000000-6_main_cuda.cudafe1.cpp:(.text+0x215b): undefined reference to cv::GaussianBlur(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_<int>, double, double, int)' tmpxft_00001e36_00000000-6_main_cuda.cudafe1.cpp:(.text+0x235f): undefined reference to
cv::imwrite(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, cv::_InputArray const&, std::vector<int, std::allocator > const&)’
tmpxft_00001e36_00000000-6_main_cuda.cudafe1.cpp:(.text+0x2766): undefined reference to cv::imwrite(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)' /tmp/tmpxft_00001e36_00000000-11_main_cuda.o: In function
main’:
tmpxft_00001e36_00000000-6_main_cuda.cudafe1.cpp:(.text+0x2b91): undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int)’
解决方法
-推荐使用方法二,亲测可行。
方法一:将opencv头文件加入系统头文件路径
- 一般在安装好opencv后,默认的路径都在
/usr/local/include/opencv4
下,而CUDA程序如果没有使用CMakeList
,就没办法手动设置opencv的路径,因此这里需要将opencv的头文件链接到系统头文件中:
方法二:(推荐)
- 编写
CMakeList
,手动链接OpenCV的路径:
- 编译:
参考文章:
- fatal error: opencv2/opencv.hpp: No such file or directory
- undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::all