CUDA——报错解决:编写CUDA+OpenCV混合程序时遇到:undefined reference to `cv::imread(std::__cxx11::basic_string<char,

5 篇文章 0 订阅

报错解决:找不到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的头文件链接到系统头文件中:
sudo ln -s /usr/local/include/opencv4 /usr/include/

在这里插入图片描述

方法二:(推荐)

mkdir build && cd build
  • 编写CMakeList,手动链接OpenCV的路径:
cmake_minimum_required(VERSION 3.10)
project(main_cuda)

set(CMAKE_CXX_STANDARD 03)
find_package(CUDA REQUIRED)

# 加载OpenCV 4 的头文件
find_package(OpenCV 4.1.1 REQUIRED) 
include_directories(${OpenCV_INCLUDE_DIRS}) 

cuda_add_executable(main_cuda main_cuda.cu)

target_link_libraries(main_cuda ${OpenCV_LIBS})
  • 编译:
cmake ..
make

在这里插入图片描述

参考文章:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值