ROS系统中编写多个C++文件时,主文件调用其它文件函数或类时出现:对“xxxxxx“未定义的引用问题记录
问题描述
主文件对其它文件内容调用时,明明已经正确引用相关头文件,并确保类和函数已被定义,仍然出现下面问题。
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.cppsrc/measurementpredictor.cppsrc/statepredictor.cppsrc/stateupdater.cppsrc/fusionukf.cppsrc/main.cppsrc/tools.cpp)target_link_libraries(robot_pose_ukf_node${catkin_LIBRARIES}/opt/ros/melodic/lib/libcsm.so)
ROS系统中编写多个C++文件时,主文件调用其它文件函数或类时出现:对“xxxxxx“未定义的引用问题记录相关推荐
- 疑难杂症篇(十八)--ROS系统中使用SLAM算法建图时出现地图漂移的几种原因
本篇主要介绍在ROS系统中使用SLAM算法建地图时出现地图定位漂移的几种原因及可以采取的措施. 1.SLAM建图时出现的定位漂移现象 2.原因分析 里程计数据发生异常: 计算机的配置不高,计算机建图过 ...
- ROS系统中实现点云聚类(realsense数据源)
本文主要介绍ROS系统中如何订阅并解码realsense点云数据,并对点云进行稀疏.去噪.聚类. 环境配置见<ROS系统中从零开始部署YoloV4目标检测算法(3种方式)> 需要安装的第三 ...
- 思岚A1激光雷达windows系统与ROS系统中的使用
前言: 忙了一天,遇到了无数个问题解不开,结果竟然是因为安卓的USB连接线有问题,博友们,如果你们遇到如下问题: 思岚A1激光雷达windows上位机的使用:下载了串口的驱动(CP210x VCP W ...
- 在 Linux 系统中安装Load Generator ,并在windows 调用
在 Linux 系统中安装Load Generator ,并在windows 调用 由于公司需要测试系统的最大用户承受能力,所以需要学习使用loadrunner.在安装的时候碰到了不少问题,所以写下此 ...
- 分时系统中,当用户数目为100时,为保证响应时间不超过2s,此时的时间片最大应该为
分时系统中,当用户数目为100时,为保证响应时间不超过2s,此时的时间片最大应该为? 解: 公式为:响应时间/用户数 其他类似. 因此答案为:2/100=20ms
- linux拷贝文件时如果想保留文件原有的时间属性,可以使用选项,Linux考试题完整版.doc...
PAGE Linux基础知识 自测题 单选题(共计40题) 1. 查看命令cd的绝对路径,结果如下: # which cd /usr/bin/which: no cd in (/usr/kerbero ...
- 使用gcc编译报错:/tmp/ccoLTk4o.o:在函数‘main’中: main1.c:(.text+0x9c):对‘pirnt1’未定义的引用 collect2: 错误:ld 返回 1
报错 使用gcc编译报错:/tmp/ccoLTk4o.o:在函数'main'中: main1.c:(.text+0x9c):对'pirnt1'未定义的引用 collect2: 错误:ld 返回 1 解 ...
- 结合xxx.cpp:(.text+0x55):对‘xxx’未定义的引用剖析Linux环境下动态库.so文件
操作系统:Linux系统 场景:g++编译,连接动态库文件时 错误示例(中文): /tmp/cccgNNpb.o:在函数'main'中: test.cpp:(.text+0x55):对'myprint ...
- python3文件的编码类型是_Python3.x环境创建Python脚本文件时,需要将文件编码格式设置为...
Python3.x环境创建Python脚本文件时,需要将文件编码格式设置为 答:UTF-8 在黄种人群中有一种叫白化病的隐性遗传病,其致病原因是 答:表皮中的黑色素细胞缺乏酪氨酸酶: 注射用水可通过( ...
最新文章
- MVC使用 Elmah 日志记录组件
- 一个简单程序的反编译
- php smarty 源码,Smarty php源码 v3.1.39
- POJ 1753 Flip Game DFS枚举
- Spring @Transactional踩坑记
- 字体外面怎么加边框_字体处理的6种方法,解决ppt种字体不突出的问题
- 软件工程心理学之1----开篇
- [POI2008]STA-Station
- 只想安安静静地敲完一段代码
- mysql备份到制定目录_写一个脚本定时自动备份mysql到指定目录
- python import _ssl_如何在python 2.7.6中导入_ssl?
- Mac 使用命令行工具解压和压缩 rar 文件
- linux yum 安装软件
- LayaAir cacheAs 缓存与 visible 隐藏
- 阮一峰ES6入门读书笔记(十五):Class
- ECS Windows 系统蓝屏 (BSOD) 以及停止响应 (Hang) 的处理
- 上海商业车险进平台验收通过
- 三角形各种心的代数几何性质
- Vue-html5-editor 编辑器的使用及一些问题解决
- J2SDK和TOMCAT的安装及配置