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

调用cv::cvtColor时遭遇OpenCV链接错误,求解决方法

解决cv::cvtColor的链接错误问题

这个问题我太熟悉了——你踩了CMake里一个很容易犯的错误:用add_definitions()来指定链接库完全不对!

错误原因解析

add_definitions()的作用是给编译器添加预处理器宏定义(比如-DDEBUG这种),根本不是用来告诉链接器要链接哪些库的。所以你写的那些-lopencv_xxx参数根本没被链接器识别到,自然找不到cv::cvtColor的符号(这个函数在opencv_imgproc库里面),就出现了undefined reference错误。

正确的CMakeLists写法

推荐用CMake官方推荐的find_package方式来处理OpenCV依赖,既跨平台又可靠:

cmake_minimum_required(VERSION 2.8)
project(stereo_img)

# 查找指定版本的OpenCV(对应你错误里的2.4版本)
find_package(OpenCV 2.4 REQUIRED COMPONENTS core imgproc highgui nonfree objdetect features2d)

# 生成可执行文件
add_executable(stereo_img stereo_img.cpp)

# 将OpenCV库链接到你的目标程序
target_link_libraries(stereo_img ${OpenCV_LIBS})

如果你确实想手动指定库(不推荐,因为跨平台性差),也应该用target_link_libraries而不是add_definitions:

cmake_minimum_required(VERSION 2.8)
project(stereo_img)

add_executable(stereo_img stereo_img.cpp)

# 直接把需要的库链接到目标
target_link_libraries(stereo_img opencv_core opencv_imgproc opencv_highgui opencv_nonfree opencv_objdetect opencv_features2d)

后续操作

修改完CMakeLists.txt后,记得删除之前的build目录(如果有的话),重新执行:

mkdir build && cd build
cmake ..
make

这样链接器就能正确找到opencv_imgproc库,解决你的链接错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:41:12