OpenCV 和 Libtorch 冲突

问题描述 投票:0回答:1

Ubuntu 24系统; CLion IDE。尝试使用 OpenCV 和 Libtorch 运行代码时,出现以下错误:

undefined reference to cv::putText(...)
undefined reference to cv::VideoCapture::VideoCapture(...)
undefined reference to cv::imshow(...)

有趣的是,完全依赖 OpenCV(并使用上述函数)的应用程序运行没有问题。专门使用 Libtorch 的应用程序运行也没有问题。这种情况发生在同一个项目中,代码(显然)和 CMake 列表是不同的。

纯 OpenCV 应用程序使用的 CMake 示例:

cmake_minimum_required(VERSION 3.28)
project(libtorch)

find_package (OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
set(CMAKE_CXX_STANDARD 17)

add_executable(libtorch main.cpp)
target_link_libraries(libtorch ${OpenCV_LIBS})

纯 Libtorch 应用程序可使用的 CMake 示例:

cmake_minimum_required(VERSION 3.28)
project(libtorch)

find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")

add_executable(libtorch main.cpp)
target_link_libraries(libtorch "${TORCH_LIBRARIES}")
set_property(TARGET libtorch PROPERTY CXX_STANDARD 17)

混合应用程序中出现错误的 CMake 示例:

cmake_minimum_required(VERSION 3.28)
project(libtorch)

find_package (OpenCV REQUIRED)
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")

add_executable(libtorch main.cpp)
target_link_libraries(libtorch ${OpenCV_LIBS})
target_link_libraries(libtorch "${TORCH_LIBRARIES}")
set_property(TARGET libtorch PROPERTY CXX_STANDARD 17)

这发生在同一个项目中。在 CLion 中,标志是

-DCMAKE_PREFIX_PATH=/usr/include/libtorch/share/cmake/Torch/

c++ opencv cmake pytorch libtorch
1个回答
0
投票

您不能多次调用

target_link_libraries
。每次调用都会覆盖之前的配置。
target_link_libraries(libtorch ${OpenCV_LIBS})
将 OpenCV 设置为依赖项。
target_link_libraries(libtorch "${TORCH_LIBRARIES}")
覆盖 OpenCV 依赖项并将 LibTorch 设置为依赖项。您必须在一次调用中设置所有依赖项:

target_link_libraries(libtorch ${OpenCV_LIBS} "${TORCH_LIBRARIES}")
© www.soinside.com 2019 - 2024. All rights reserved.