ROS系统中编写多个C++文件时,主文件调用其它文件函数或类时出现:对“xxxxxx“未定义的引用问题记录

2023-05-16

问题描述

主文件对其它文件内容调用时,明明已经正确引用相关头文件,并确保类和函数已被定义,仍然出现下面问题。

CMakeFiles/robot_pose_ukf_node.dir/src/main.cpp.o:在函数‘__static_initialization_and_destruction_0(int, int)’中:
main.cpp:(.text+0x232):对‘FusionUKF::FusionUKF()’未定义的引用
main.cpp:(.text+0x258):对‘DataPoint::DataPoint()’未定义的引用
collect2: error: ld returned 1 exit status

问题解决

在构建多个文件时,注意不要每个头文件下都引用相同的头文件,如果不能确保单个文件依赖的独立性,就统一小范围文件的的相关性,避免在统一个应用场景下重复多次无顺序的调用同一个头文件,莫名其妙的报错是真难受。

第一步

细心检查头文件是否出现引用错乱、重复引用问题;确保引用的函数和类已经正确定义。

第二步

检查CMakeLists.txt文件,确保include文件和对应的.cpp文件被检索编译,检查的关键内容见代码块。(代码块中的内容可以直接添加到CMakeLists.txt文件中的最后一行)

其中,robot_pose_ukf_node是main函数定义的ROS节点,节点后的.cpp文件是定义节点的主文件和可供节点调用的其它文件。/opt/ros/melodic/lib/libcsm.so是ROS的动态链接库。(使用时注意和ROS版本以及自己的定义的ROS节点对应)

include_directories(include ${catkin_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS})
include_directories(include/${PROJECT_NAME})

add_executable(robot_pose_ukf_node src/datapoint.cpp
                              src/measurementpredictor.cpp
                              src/statepredictor.cpp
                              src/stateupdater.cpp
                              src/fusionukf.cpp
                              src/main.cpp
                              src/tools.cpp)
                              
 target_link_libraries(robot_pose_ukf_node
   ${catkin_LIBRARIES}
   /opt/ros/melodic/lib/libcsm.so
 )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS系统中编写多个C++文件时,主文件调用其它文件函数或类时出现:对“xxxxxx“未定义的引用问题记录 的相关文章

  • 日期工具类

    日期工具类 1 span class token keyword package span span class token namespace com span class token punctuation span hl span c
  • easypoi的使用-导入校验

    easypoi导入校验 一 导入之基础校验 现在产品需要对导入的Excel进行校验 xff0c 不合法的Excel不允许入库 xff0c 需要返回具体的错误信息给前端 xff0c 提示给用户 xff0c 错误信息中需要包含行号以及对应的错误
  • springboot-日志配置

    springboot 日志配置 1 默认日志 logback 默认情况下 xff0c springboot会使用logback来记录日志 xff0c 并且使用INFO级别输出到控制台 xff0c 在运行程序的时候 xff0c 你应该看到过很
  • SpringCloud:Gateway之鉴权

    一 JWT 实现微服务鉴权 JWT一般用于实现单点登录 单点登录 xff1a 如腾讯下的游戏有很多 xff0c 包括lol xff0c 飞车等 xff0c 在qq游戏对战平台上登录一次 xff0c 然后这些不同的平台都可以直接登陆进去了 x
  • VSCode提交代码更新至github

    VSCode提交代码更新至github的步骤 在Explorer修改代码或文档转到Source control菜单 修改了代码或文档此菜单会带有修改文件数下标 先添加 stage changes xff0c 再点击 commit xff0c
  • vscode集成git

    vscode集成git 一 安装git 下载git安装包 xff0c 安装完git后配置环境变量 xff0c 在系统变量中的Path中新建 D software softwareInstall git Git cmd xff0c win 4
  • java中各种类型用Stream流求最大值最小值

    文章目录 java中各种类型用Stream流求最大值最小值一 BigDecimal 求最大值和最小值1 stream reduce 实现2 stream max 或stream min 实现 二 Integer 求最大值和最小值1 stre
  • idea:使用easyYapi插件导出yapi接口

    文章目录 idea xff1a 使用easyYapi插件导出yapi接口一 安装插件easyYapi二 配置easyYapiToken方式项目id方式 idea xff1a 使用easyYapi插件导出yapi接口 一 安装插件easyYa
  • springboot:各种下载文件的方式

    文章目录 springboot xff1a 各种下载文件的方式一 使用response输出流下载二 使用ResponseEntity三 注意 springboot xff1a 各种下载文件的方式 一 使用response输出流下载 注意第一
  • prometheus数据远程写入elasticsearch

    文章目录 prometheus数据远程写入elasticsearch一 部署elasticsearch二 部署prometheus三 通过prometheusbeat写入数据到es四 elasticsearch head验证 prometh
  • ElasticSearch 基本使用

    文章目录 ElasticSearch 基本使用一 简介二 参考文档三 ES核心概念核心概念数据类型 四 REST APIS索引API文档API查询文档API 五 SQL REST API ElasticSearch 基本使用 系统环境 El
  • SpringBoot集成Easy-Es

    文章目录 SpringBoot集成Easy Es一 集成demo二 索引CRUD创建索引查询索引更新索引删除索引 三 数据CURD四 参数文档 SpringBoot集成Easy Es Easy Es xff08 简称EE xff09 是一款
  • 最简单的markdown里面插入图片的办法 (用魔法打败魔法)

    这个问题困扰了我很久 xff1a 笔者非常喜欢用markdown 觉得他轻便 灵活 美观 xff0c 但是奈何 xff0c markdown里面插图片会显得有些棘手 xff0c 比方说最简单的用本地图片 markdown里面就是本机图片的路
  • c++面试必问:c++和c的8点不同

    前言 xff1a 最近发现很多面试题都会问到c 43 43 和c的不同 xff1b 总结一下 xff0c 发现遗漏的知识点还是挺多的 xff1b 比如c语言中 xff0c const关键字是个冒牌货 xff1b c 43 43 中struc
  • 01 - 树莓派简介以及烧录系统

    树莓派简介 指路B站 1 树莓派是什么 xff1f 树莓派就是计算机 xff0c 而计算机就是由运算器 控制器 I O设备等硬件部分以及由操作系统 应用程序组成的软件部分共同组成的整体 xff0c 即硬件和软件共同组成的整体就是计算机 xf
  • 上线啦,可以定时周期性提醒群成员的机器人

    这是站在巨人肩膀上的成果 啊 xff0c 有点夸张了 xff0c 总之简单地说 xff0c 熬了几个小时的探索和在洪振的小小帮助下实现了 xff0c 这个小小的但很有用的功能 实现钉钉机器人的自动周期性提醒群成员消息并可以选择是否 64 所
  • 如何在github上建立个人博客?

    如何在github上建立个人博客 xff1f Windows10 使用GitHub 43 Hexo 模板建立个人博客 前期准备 xff1a 1 git 2 node js 验证是否安装成功 xff1a win 43 r 输入 cmd 进入命
  • 用lvm为centos-root逻辑卷扩容

    在用linux进行开发的时候 xff0c 发现centos root下只有50G的空间 xff0c 不满足实际的需求 解决的方法有两种 xff0c 一种是外挂硬盘 xff0c 将其格式化并挂载在某目录下 xff08 如mnt xff09 x
  • STM32 IO模拟实现软件串口

    最近项目中STM32的串口资源紧张 xff0c 于是使用IO口进行模拟串口 xff0c 现进行整理记录 实现思路 IO口模拟串口的思路也比较简单 xff0c 一切按照串口协议进行操作即可 对于发送 xff0c 计算好不同波特率对应的延时时间
  • Linux命令大全(排版清晰!!持续更新!!非常详细)

    前言 最近在使用Linux的时候 xff0c 发现有很多命令不太会 在csdn查阅命令大全的时候 xff0c 发现很多文章都没有很好的排版 xff0c 于是写一篇文章 xff0c 希望能够帮助到大家 xff01 文章内容较多 xff0c 可

随机推荐