编译github上qt-ros开源项目时:CMakeFiles/ros_qt5_gui_app.dir/src/qnode.cpp.o: In function `cv::Mat::Mat(int,

4 篇文章 0 订阅

在编译蒋程扬大佬的ROS机器人GUI开源项目时报错如下:

CMakeFiles/ros_qt5_gui_app.dir/src/qnode.cpp.o: In function `cv::Mat::Mat(int, int, int, void*, unsigned long)':
qnode.cpp:(.text._ZN2cv3MatC2EiiiPvm[_ZN2cv3MatC5EiiiPvm]+0x150): undefined reference to `cv::error(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*, char const*, int)'怎么解决

这个错误表示在`qnode.cpp`文件中的`cv::Mat`对象构造函数调用时存在未定义的引用错误。这通常是由于没有正确链接OpenCV库引起的。 要解决这个问题,确保按照以下步骤进行操作:

1. 检查你的CMakeLists.txt文件是否正确地包含了OpenCV库。在CMakeLists.txt文件中,你应该包含类似以下的行:

find_package(OpenCV REQUIRED)
target_link_libraries(your_target_name ${OpenCV_LIBS})

其中,`your_target_name`是你的目标可执行文件或库的名称。

2. 确保OpenCV库已正确安装在你的系统中,并且版本与CMakeLists.txt文件中指定的版本一致。

3. 在构建项目之前,删除先前生成的构建文件和目录,然后重新运行CMake构建过程,以确保链接和编译过程是干净而正确的。

4. 如果上述步骤都没有解决问题,请检查`cv::error`函数的定义是否在可用的OpenCV库中。如果没有找到定义,可能是由于OpenCV版本不兼容导致的。尝试升级或降级OpenCV版本,以匹配你的代码和项目依赖。

即添加find_package()这行

将target_link_libraries()这行变成如下所示

find_package(OpenCV REQUIRED)
target_link_libraries(ros_qt5_gui_app ${QT_LIBRARIES} ${catkin_LIBRARIES} ${OpenCV_LIBS})

编译运行后如图所示:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值