鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ros2humble自定义消息类型报错

    已定时 已固定 已锁定 已移动 未解决
    ROS 2相关问题
    ros2 msg ros2-humble
    3
    8
    727
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 19415486111
      曾爱鱼愿婚
      最后由 编辑

      报错:

      gmake[2]: *** [CMakeFiles/my_package__rosidl_typesupport_fastrtps_c.dir/build.make:123:CMakeFiles/my_package__rosidl_typesupport_fastrtps_c.dir/rosidl_typesupport_fastrtps_c/my_package/msg/detail/my_msg__type_support_c.cpp.o] 错误 1
      gmake[1]: *** [CMakeFiles/Makefile2:239:CMakeFiles/my_package__rosidl_typesupport_fastrtps_c.dir/all] 错误 2
      gmake[1]: *** 正在等待未完成的任务....
      gmake[2]: *** [CMakeFiles/my_package__rosidl_typesupport_fastrtps_cpp.dir/build.make:123:CMakeFiles/my_package__rosidl_typesupport_fastrtps_cpp.dir/rosidl_typesupport_fastrtps_cpp/my_package/msg/detail/dds_fastrtps/my_msg__type_support.cpp.o] 错误 1
      gmake[1]: *** [CMakeFiles/Makefile2:291:CMakeFiles/my_package__rosidl_typesupport_fastrtps_cpp.dir/all] 错误 2
      gmake: *** [Makefile:146:all] 错误 2
      ---
      Failed   <<< my_package [2.20s, exited with code 2]
      
      Summary: 0 packages finished [2.59s]
        1 package failed: my_package
        1 package had stderr output: my_package
      

      cmakelist.txt:

      cmake_minimum_required(VERSION 3.8)
      project(my_package)
      
      if(NOT CMAKE_CXX_STANDARD)
        set(CMAKE_CXX_STANDARD 14)
      endif()
      
      if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
        add_compile_options(-Wall -Wextra -Wpedantic)
      endif()
      
      # find dependencies
      # uncomment the following section in order to fill in
      # further dependencies manually.
      # find_package(<dependency> REQUIRED)
      find_package(std_msgs REQUIRED)
      find_package(rosidl_default_generators REQUIRED)
      
      rosidl_generate_interfaces(${PROJECT_NAME}
        "msg/MyMsg.msg"
        DEPENDENCIES std_msgs
      )
      ament_export_dependencies(rosidl_default_runtime)
      ament_package()
      

      package.xml:

      <?xml version="1.0"?>
      <?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
      <package format="3">
        <name>my_package</name>
        <version>0.0.1</version>
        <description>TODO: Package description</description>
        <maintainer email="123456@qq.com">henglin</maintainer>
        <license>Apache License 2.0</license>
      
      
        <buildtool_depend>rosidl_default_generators</buildtool_depend>
        <build_depend>std_msgs</build_depend>
        <exec_depend>rosidl_default_runtime</exec_depend>
        <exec_depend>std_msgs</exec_depend>
        <member_of_group>rosidl_interface_packages</member_of_group>
      
        <test_depend>ament_lint_auto</test_depend>
        <test_depend>ament_lint_common</test_depend>
      
        <export>
          <depend>std_msgs</depend>
          <depend>rosidl_default_generators</depend>
          
        </export>
      </package>
      

      msg文件:

      string publisher_id
      float64 x
      float64 y
      float64 z
      
      小鱼小 1 条回复 最后回复 回复 引用 0
      • 19415486111 1941548611 将这个主题转为问答主题,在
      • 小鱼小
        小鱼 技术大佬 @1941548611
        最后由 编辑

        @1941548611 把完整报错贴出来

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        19415486111 1 条回复 最后回复 回复 引用 0
        • 19415486111
          曾爱鱼愿婚
          最后由 编辑

          原报错非常长,好几万字符,这是部分报错:

          /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_generator_c/more_interfaces/msg/detail/key_board_value__functions.c: In function ‘more_interfaces__msg__KeyBoardValue__create’:
          /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_generator_c/more_interfaces/msg/detail/key_board_value__functions.c:91:3: warning: implicit declaration of function ‘memset’ [-Wimplicit-function-declaration]
             91 |   memset(msg, 0, sizeof(more_interfaces__msg__KeyBoardValue));
                |   ^~~~~~
          /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_generator_c/more_interfaces/msg/detail/key_board_value__functions.c:12:1: note: include ‘<string.h>’ or provide a declaration of ‘memset’
             11 | #include "rcutils/allocator.h"
            +++ |+#include <string.h>
             12 | 
          /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_generator_c/more_interfaces/msg/detail/key_board_value__functions.c:91:3: warning: incompatible implicit declaration of built-in function ‘memset’ [-Wbuiltin-declaration-mismatch]
             91 |   memset(msg, 0, sizeof(more_interfaces__msg__KeyBoardValue));
                |   ^~~~~~
          /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_generator_c/more_interfaces/msg/detail/key_board_value__functions.c:91:3: note: include ‘<string.h>’ or provide a declaration of ‘memset’
          In file included from /usr/include/stdint.h:26,
                           from /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h:9,
                           from /opt/ros/humble/include/rmw/features.h:24,
                           from /usr/include/x86_64-linux-gnu/c++/11/bits/os_defines.h:39,
                           from /usr/include/x86_64-linux-gnu/c++/11/bits/c++config.h:586,
                           from /usr/include/c++/11/utility:68,
                           from /usr/include/c++/11/algorithm:60,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_generator_cpp/more_interfaces/msg/detail/key_board_value__struct.hpp:8,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_typesupport_fastrtps_cpp/more_interfaces/msg/detail/key_board_value__rosidl_typesupport_fastrtps_cpp.hpp:11,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_typesupport_fastrtps_cpp/more_interfaces/msg/detail/dds_fastrtps/key_board_value__type_support.cpp:4:
          /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:74:17: error: missing binary operator before token "("
             74 | #if __GLIBC_USE (IEC_60559_BFP_EXT) || __GLIBC_USE (ISOC2X)
                |                 ^
          /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:80:17: error: missing binary operator before token "("
             80 | #if __GLIBC_USE (IEC_60559_BFP_EXT) || defined __STDC_WANT_IEC_60559_EXT__
                |                 ^
          /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:97:17: error: missing binary operator before token "("
             97 | #if __GLIBC_USE (IEC_60559_FUNCS_EXT) || __GLIBC_USE (ISOC2X)
                |                 ^
          In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h:9,
                           from /opt/ros/humble/include/rmw/features.h:24,
                           from /usr/include/x86_64-linux-gnu/c++/11/bits/os_defines.h:39,
                           from /usr/include/x86_64-linux-gnu/c++/11/bits/c++config.h:586,
                           from /usr/include/c++/11/utility:68,
                           from /usr/include/c++/11/algorithm:60,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_generator_cpp/more_interfaces/msg/detail/key_board_value__struct.hpp:8,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_typesupport_fastrtps_cpp/more_interfaces/msg/detail/key_board_value__rosidl_typesupport_fastrtps_cpp.hpp:11,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_typesupport_fastrtps_cpp/more_interfaces/msg/detail/dds_fastrtps/key_board_value__type_support.cpp:4:
          /usr/include/stdint.h:276:17: error: missing binary operator before token "("
            276 | #if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
                |                 ^
          In file included from /usr/include/stdio.h:27,
                           from /opt/ros/humble/include/rcutils/rcutils/testing/fault_injection.h:18,
                           from /opt/ros/humble/include/rcutils/rcutils/macros.h:146,
                           from /opt/ros/humble/include/rcutils/rcutils/allocator.h:28,
                           from /opt/ros/humble/include/rmw/features.h:26,
                           from /usr/include/x86_64-linux-gnu/c++/11/bits/os_defines.h:39,
                           from /usr/include/x86_64-linux-gnu/c++/11/bits/c++config.h:586,
                           from /usr/include/c++/11/utility:68,
                           from /usr/include/c++/11/algorithm:60,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_generator_cpp/more_interfaces/msg/detail/key_board_value__struct.hpp:8,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_typesupport_fastrtps_cpp/more_interfaces/msg/detail/key_board_value__rosidl_typesupport_fastrtps_cpp.hpp:11,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_typesupport_fastrtps_cpp/more_interfaces/msg/detail/dds_fastrtps/key_board_value__type_support.cpp:4:
          /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:74:17: error: missing binary operator before token "("
             74 | #if __GLIBC_USE (IEC_60559_BFP_EXT) || __GLIBC_USE (ISOC2X)
                |                 ^
          /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:80:17: error: missing binary operator before token "("
             80 | #if __GLIBC_USE (IEC_60559_BFP_EXT) || defined __STDC_WANT_IEC_60559_EXT__
                |                 ^
          /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:97:17: error: missing binary operator before token "("
             97 | #if __GLIBC_USE (IEC_60559_FUNCS_EXT) || __GLIBC_USE (ISOC2X)
                |                 ^
          In file included from /opt/ros/humble/include/rcutils/rcutils/testing/fault_injection.h:18,
                           from /opt/ros/humble/include/rcutils/rcutils/macros.h:146,
                           from /opt/ros/humble/include/rcutils/rcutils/allocator.h:28,
                           from /opt/ros/humble/include/rmw/features.h:26,
                           from /usr/include/x86_64-linux-gnu/c++/11/bits/os_defines.h:39,
                           from /usr/include/x86_64-linux-gnu/c++/11/bits/c++config.h:586,
                           from /usr/include/c++/11/utility:68,
                           from /usr/include/c++/11/algorithm:60,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_generator_cpp/more_interfaces/msg/detail/key_board_value__struct.hpp:8,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_typesupport_fastrtps_cpp/more_interfaces/msg/detail/key_board_value__rosidl_typesupport_fastrtps_cpp.hpp:11,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_typesupport_fastrtps_cpp/more_interfaces/msg/detail/dds_fastrtps/key_board_value__type_support.cpp:4:
          /usr/include/stdio.h:136:17: error: missing binary operator before token "("
            136 | #if __GLIBC_USE (ISOC2X)
                |                 ^
          /usr/include/stdio.h:306:43: error: missing binary operator before token "("
            306 | #if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2)
                |                                           ^
          /usr/include/stdio.h:387:17: error: missing binary operator before token "("
            387 | #if __GLIBC_USE (LIB_EXT2)
                |                 ^
          In file included from /usr/include/stdio.h:430,
                           from /opt/ros/humble/include/rcutils/rcutils/testing/fault_injection.h:18,
                           from /opt/ros/humble/include/rcutils/rcutils/macros.h:146,
                           from /opt/ros/humble/include/rcutils/rcutils/allocator.h:28,
                           from /opt/ros/humble/include/rmw/features.h:26,
                           from /usr/include/x86_64-linux-gnu/c++/11/bits/os_defines.h:39,
                           from /usr/include/x86_64-linux-gnu/c++/11/bits/c++config.h:586,
                           from /usr/include/c++/11/utility:68,
                           from /usr/include/c++/11/algorithm:60,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_generator_cpp/more_interfaces/msg/detail/key_board_value__struct.hpp:8,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_typesupport_fastrtps_cpp/more_interfaces/msg/detail/key_board_value__rosidl_typesupport_fastrtps_cpp.hpp:11,
                           from /home/henglin/view_he/project_6/QtWidgetsApplication1/build/more_interfaces/rosidl_typesupport_fastrtps_cpp/more_interfaces/msg/detail/dds_fastrtps/key_board_value__type_support.cpp:4:
          /usr/include/x86_64-linux-gnu/bits/floatn.h:30:22: error: missing binary operator before token "("
             30 |      ? __GNUC_PREREQ (4, 3)                                             \
                |                      ^
          
          
          1 条回复 最后回复 回复 引用 0
          • 19415486111
            曾爱鱼愿婚 @小鱼
            最后由 编辑

            @小鱼 都是一堆标准库未声明,找不到定义之类的问题

            小鱼小 1 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @1941548611
              最后由 小鱼 编辑

              @1941548611 重新换个系统或环境看看吧,目前我也看不出具体问题,感觉和上下文环境有关系

              新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

              19415486111 1 条回复 最后回复 回复 引用 0
              • 19415486111
                曾爱鱼愿婚 @小鱼
                最后由 编辑

                @小鱼 现在的报错情况就是,只有自定义消息类型功能用不了,其他ros2功能正常;报错中显示了gcc的头文件有问题,单独使用头文件编译都正常,生成可执行文件,现在就完全不知道啥情况,单独使用没问题,一起用就有问题

                小鱼小 1 条回复 最后回复 回复 引用 0
                • 小鱼小
                  小鱼 技术大佬 @1941548611
                  最后由 编辑

                  @1941548611 考虑还是环境问题,重装麻烦可以试试docker中构建

                  新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                  1 条回复 最后回复 回复 引用 0
                  • 16287993151
                    早点睡晚安吧
                    最后由 编辑

                    同问 解决了嘛?

                    1 条回复 最后回复 回复 引用 0
                    • 第一个帖子
                      最后一个帖子
                    皖ICP备16016415号-7
                    Powered by NodeBB | 鱼香ROS