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

LibTorch与OpenCV库无法在同一份CMakeLists.txt文件中正常使用

LibTorch与OpenCV同时链接失败的解决方法

该问题90%以上的场景是LibTorch与OpenCV编译使用的C++ ABI版本不匹配导致的,可按以下步骤排查解决:

  • 第一步:确认两者ABI版本一致
    官方提供的LibTorch分为两个发行版本:Pre-cxx11 ABI和cxx11 ABI,需要和你本地OpenCV编译使用的ABI版本完全匹配。
    查看OpenCV使用的ABI版本可执行命令:
    readelf -p .comment /path/to/your/libopencv_core.so
    若输出中gcc版本≥5,系统默认使用cxx11 ABI,对应下载cxx11版本的LibTorch即可;若你使用的是旧版gcc编译的OpenCV,对应下载Pre-cxx11版本的LibTorch。
  • 第二步:修改CMakeLists.txt配置,强制指定ABI版本
    修正后的CMakeLists.txt参考如下:
    cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
    project(Detect)
    
    # 统一C++标准,LibTorch 1.7+建议用C++17
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    # 按你的ABI版本选择开关:用cxx11 ABI设为1,pre-cxx11设为0
    add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
    
    #set(Torch "/home/somnath/libtorch/share/cmake/Torch")
    find_package(Torch REQUIRED)
    find_package(OpenCV REQUIRED)
    message(STATUS "CVINCLUDE: ${OpenCV_INCLUDE_DIRS}")
    
    add_executable(Detect main.cpp)
    # 移除链接参数间的分号,直接空格分隔即可
    target_link_libraries(Detect ${TORCH_LIBRARIES} ${OpenCV_LIBS})
    
  • 第三步:版本仍不匹配时重新编译其中一个库
    如果上述操作后仍有链接错误,直接用同一个编译器、同一个C++标准、同一个ABI设置,重新编译LibTorch或OpenCV任意一方,保证两者编译配置完全一致即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:57:03