ROS Noetic编译C++订阅摄像头话题文件报错找不到ros/ros.h头文件求助
问题排查与解决方案
错误根源
ros/ros.h找不到的错误,除了CMake配置缺失外,也可能是环境未正确加载导致的,结合你提供的CMakeLists.txt,具体修复步骤如下:
修复步骤
- 补全OpenCV依赖查找
你当前的配置中直接使用了${OpenCV_INCLUDE_DIRS}变量,但没有显式查找OpenCV包,在find_package(catkin REQUIRED COMPONENTS ...)语句前添加一行:
find_package(OpenCV REQUIRED)
- 补全可执行文件编译与链接规则
你现有的CMake配置仅声明了依赖,没有指定需要编译的源文件、生成的可执行文件、以及对应的库链接规则,在文件末尾添加以下内容(假设你的源文件receiver.cpp放在功能包的src目录下,路径不对可自行调整):
# 声明要编译的可执行文件 add_executable(receiver src/receiver.cpp) # 为可执行文件链接依赖库 target_link_libraries(receiver ${catkin_LIBRARIES} ${OpenCV_LIBRARIES} )
- 检查环境加载与编译流程
- 每次打开终端执行编译前,必须先运行ROS环境加载命令:
source /opt/ros/noetic/setup.bash,否则系统无法识别ROS的头文件和库路径 - 不要直接在功能包目录下执行编译,需要回到ROS工作空间的根目录执行
catkin_make完成全工作空间编译
- 可选依赖校验
如果完成以上步骤仍然报错,可手动检查ROS基础头文件是否存在:
执行ls /opt/ros/noetic/include/ros/ros.h,如果提示文件不存在,执行安装命令sudo apt install ros-noetic-roscpp补全依赖。
内容的提问来源于stack exchange,提问作者Akash
相关产品推荐
相关产品推荐

