The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support

项目场景:

ros2 foxy 运行单目orb slam3


问题描述

编译正常,程序运行时报错如下

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Initialization of Atlas from scratch
Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name:
There are 1 cameras in the atlas
Camera 0 is pinhole
slam changed
============================
terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.2.0) /home/ros2/opencv4.4/opencv-4.4.0/modules/highgui/src/window.cpp:634: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvNamedWindow'

 错误解决方案
按照系统给出的解决方案,执行命令
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
并不能解决问题


原因分析:

问题出在,安装opencv时编译配置出现了问题。

正确的执行命令是:

 

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules ../opencv-4.4.0


解决方案:

opencv目录结构:

以前的编译命令:

cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules ../opencv-4.4.0

正确的编译执行命令:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules ../opencv-4.4.0

重新编译后运行:

ros2 run orbslam3 mono ~/ros2_ws/src/ORB_SLAM3/Vocabulary/ORBvoc.txt ~/ros2_ws/src/ORB_SLAM3/Examples/Monocular/EuRoC.yaml

 程序正常运行。

参考博客:

If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config_绿竹巷人的博客-CSDN博客

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 错误:(-2:未指定错误)该函数未实现。请使用WindowsGTK+ 2.x或Cocoa支持重新构建库。 这个错误通常是由于缺少必要的库或库版本不兼容导致的。建议重新安装或更新相关的库,并确保使用的库版本与程序要求的版本相匹配。如果问题仍然存在,请尝试使用其他库或框架来解决问题。 ### 回答2: 这个错误提示是由于你的程序引用了某个没有被实现的函数,而这个函数所依赖的库没有启用相关的支持。具体来说,可能是你正在使用的库缺乏 WindowsGTK 2.x 或 Cocoa 支持,需要重新构建这个库。 通常,这个错误会出现在你在编译或运行程序时。如果你使用的是第三方库,可以在库的官方网站或者文档中找到是否需要额外的设置或参数来启用相应的支持。 如果你正在开发自己的库或程序,避免出现这个错误的方式是更好地设计你的代码和依赖关系,确保你所使用的函数都已经被实现了,而且你所依赖的库文件都已经正确地安装和配置好了。 总之,如果出现这个错误,需要仔细检查本地环境和相关库文件是否正确配置,并根据具体情况进行调整和修复。 ### 回答3: 这个错误提示是由于代码中使用了某个函数或库,但该函数或库的实现并没有被找到。提示信息中给出了两种可能的解决方法:重新编译库加入WindowsGTK 2.x或Cocoa支持。 WindowsGTKCocoa都是不同的图形用户界面(GUI)开发工具包,用于在不同的操作系统上创建可视化用户界面。如果代码使用了某个GUI相关函数或库但并没有正确地链接它,那么就会出现该错误。 如果你的代码中确实需要使用GUI相关库或函数,那么你需要重新编译该库,并加入WindowsGTK 2.x或Cocoa支持。具体的操作方法要根据该库的文档或示例代码来确定,通常需要对编译器和链接器的设置进行调整。 另一种可能的情况是,在代码中使用了某个不支持的函数或库。如果确实如此,那么你需要重新编写代码,换用支持的函数或库。如果你不确定代码中使用了哪些库或函数,可以使用调试器等工具来寻找并解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值