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

通过Conan安装OpenCV后出现链接错误的技术求助

Conan + OpenCV/Qt 链接错误解决方案(Windows 10 + MSVC)

问题场景

在Windows 10环境下使用Conan集成OpenCV 4.5.5时出现LNK2019未解析外部符号错误,集成Qt时也遇到类似问题,但Zlib等小型库可正常编译运行。

环境与配置

默认Conan配置文件

[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=20
compiler.runtime=dynamic
compiler.version=193
os=Windows

项目文件

conanfile.txt

[requires]
opencv/4.5.5

[generators]
CMakeDeps
CMakeToolchain

CMakeLists.txt

cmake_minimum_required(VERSION 3.22)

project(minimal LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

find_package(OpenCV REQUIRED VERSION 4.5.5)

add_executable(prog main.cpp)

target_link_libraries(prog PRIVATE
    ${OpenCV_LIBS}
)

target_include_directories(prog PRIVATE 
    ${OpenCV_INCLUDE_DIRS}
)

main.cpp

#include <opencv2/opencv.hpp>

int main()
{
    cv::Mat mat{};
    return 0;
}

执行命令

conan install . --output-folder=build --build=missing
cmake -B build --preset conan-default
cmake --build --preset conan-release

错误信息

main.obj : error LNK2019: unresolved external symbol "public: __cdecl cv::Mat::Mat(void)" (??0Mat@cv@@QEAA@XZ) referenced in function main [C:\Users\redbox\Desktop\projects\opencvexample\build\prog.vcxproj]
main.obj : error LNK2019: unresolved external symbol "public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ) referenced in function main [C:\Users\redbox\Desktop\projects\opencvexample\build\prog.vcxproj]
C:\Users\redbox\Desktop\projects\opencvexample\build\Release\prog.exe : fatal error LNK1120: 2 unresolved externals [C:\Users\desktop\Desktop\projects\opencvexample\build\prog.vcxproj]

解决方案

1. 切换现代CMake链接方式(推荐)

放弃${OpenCV_LIBS}这种旧写法,直接使用Conan生成的目标库,这类目标会自动处理依赖、包含目录和编译选项:
修改CMakeLists.txt中的链接部分:

# 替换原有的target_link_libraries和target_include_directories
target_link_libraries(prog PRIVATE
    OpenCV::opencv_core
)

无需手动设置target_include_directories,OpenCV::opencv_core已包含必要的头文件路径。

2. 强制配置一致性

确保Conan安装的库与项目编译参数完全匹配:

  • 执行conan inspect opencv/4.5.5查看库的默认编译设置,确认compiler.runtime、compiler.cppstd等参数和本地配置一致。
  • 若不一致,安装时显式指定参数:
conan install . --output-folder=build --build=missing -s compiler.runtime=dynamic -s compiler.cppstd=20

3. 清理缓存重新安装

Conan缓存中可能存在不匹配的库版本,清理后重新构建:

conan remove opencv/4.5.5 -f
conan install . --output-folder=build --build=missing

4. 检查CMake预设加载

确认CMake正确加载Conan生成的预设:

  • 查看build/CMakePresets.json,确认conan-default和conan-release中的编译参数与配置一致。
  • 若预设异常,删除build目录后重新执行conan install和cmake命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:16:03