You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

链接器无法找到OpenCV函数:undefined reference与DSO缺失报错求助

解决Qt项目OpenCV链接错误方案

错误根因

最初的undefined reference和cannot find -lopencv_*报错是因为你只配置了OpenCV头文件搜索路径,没有配置库文件搜索路径。后续出现的DSO missing from command line报错,本质是链接器虽然找到了libopencv_videoio.so.4.1库,但存在依赖链缺失、库版本不匹配或库搜索路径配置错误的问题。手动复制库文件到/usr/lib属于不规范操作,极易引发版本冲突和依赖缺失。

分步解决操作

  • 第一步:先删除你手动复制到/usr/lib目录下的所有OpenCV相关库文件,避免后续多版本冲突。
  • 第二步:修改你的.pro配置文件,补充OpenCV库文件的搜索路径,路径替换为你实际存放OpenCV编译生成的lib目录路径:
# 补充库搜索路径,放在现有LIBS配置之前
LIBS += -L/home/pi/temp/opencv4/lib

如果你不确定OpenCV库的存放路径,可以执行find /home/pi/temp -name "libopencv_core.so*"查找对应路径。

  • 第三步(推荐配置,可避免手动写链接库漏项错误):
    直接通过pkg-config自动引入完整的OpenCV编译配置,替换你现有LIBS里的所有opencv相关链接项:
# 先指定opencv4.pc文件所在的pkgconfig目录路径,替换为你实际路径
PKG_CONFIG_PATH = /home/pi/temp/opencv4/lib/pkgconfig
# 自动引入opencv4的所有头文件、库路径、链接库配置
PKGCONFIG += opencv4
  • 第四步:修改完配置后必须清理旧编译缓存,重新生成Makefile再编译:
make clean
qmake
make

额外排查点

如果修改后仍报DSO missing错误,可执行以下命令检查库的软链接和依赖是否正常:

# 检查libopencv_videoio.so软链接是否指向正确的4.1版本
ls -l /home/pi/temp/opencv4/lib/libopencv_videoio.so
# 检查该库的所有依赖是否都能被找到
ldd /home/pi/temp/opencv4/lib/libopencv_videoio.so.4.1

如果存在软链接缺失,执行ln -s libopencv_videoio.so.4.1 libopencv_videoio.so在对应lib目录下创建软链接即可。


内容的提问来源于stack exchange,提问作者brandon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:54:03