【发布时间】:2017-08-02 09:52:55
【问题描述】:
全部!
我正在尝试在 CLion 项目中使用 OpenCV 库,但这不成功。我一次安装了带有 ROS 动力学的 opencv 3.2.0(我可以在 /opt/ros/kinetic/include/opencv-3.2.0 目录中看到它,我可以通过 python 导入 cv2)。但是当我使用这样的 CMakeLists.txt 时:
cmake_minimum_required(VERSION 3.6)
project(visual_slam)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
set(OpenCV_DIR /opt/ros/kinetic/include/opencv-3.2.0)
include_directories( ${OpenCV_DIR})
add_executable(visual_slam ${SOURCE_FILES})
使用下一个简单的代码:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
return 0;
}
我得到下一个错误:
CMakeFiles/visual_slam.dir/main.cpp.o:在函数
cv::String::~String()': /opt/ros/kinetic/include/opencv-3.2.0/opencv2/core/cvstd.hpp:664: undefined reference tocv::String::deallocate()' CMakeFiles/visual_slam.dir/main.cpp.o:在函数cv::String::operator=(cv::String const&)': /opt/ros/kinetic/include/opencv-3.2.0/opencv2/core/cvstd.hpp:672: undefined reference tocv::String::deallocate()'
OpenCV linking problems with ROS 中也讨论过此类错误,但是否真的有必要完全卸载然后重新安装 OpenCV?有没有更快捷的解决方案?
第二个问题,如何正确地将OpenCV从ROS添加到CMakeLists.txt?当前的 CMakeLists(见上)看起来并不灵活。我已经尝试添加了
find_package(OpenCV 3 REQUIRED)
target_link_libraries(visual_slam ${OpenCV_LIBRARIES} )
但错误是在 CMake 构建时
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.
Could not find a package configuration file provided
by "OpenCV" (requested version 3) with any of the following names:
OpenCVConfig.cmake
opencv-config.cmake
【问题讨论】: