编程debug记录(C++)

拒绝掉进同一个坑里

20230420更新

3.拷贝完整程序后在其他路径使用的一些问题

问题1.Cmake报路径不一致错误
解决方案
在新路径中删除build文件夹内的所有文件,重新编译即可
问题2.make[2]: 警告:检测到时钟错误。您的构建版本可能是不完整的
原因可能是:服务器上的文件最后修改时间比当前系统时钟要晚
解决方案
在cpp目录下打开终端输入

find ./ -type f |xargs touch

再编译就正常了

20230417更新

2.使用Cmake编译后相对路径读取不到点云文件

文件目录如下

├── build
│   └── bin
│       ├── Linx
│       └── table_scene_lms400.pcd
├── CMakeLists.txt
├── include
│   ├── func_common.h
│   ├── func_opencv.h
│   └── func_pcl.h
└── src
    ├── func_common.cpp
    ├── func_opencv.cpp
    ├── func_pcl.cpp
    └── main.cpp

理论上可执行文件生成在build里,但是使用相对路径找不到同目录下的点云文件,改成绝对路径之后可以使用
解决方案
增加读取当前工作路径和相对路径组合成绝对路径
增加头文件

#include <unistd.h>
#include <limits.h>

代码部分如下

// 读取当前工作路径和相对路径组合成绝对路径
char buffer[PATH_MAX];
// 获取当前工作路径
if (getcwd(buffer, PATH_MAX) == NULL) {
    std::cerr << "错误: 无法读取当前工作路径\n";
    return;
}
std::string current_working_directory(buffer);
std::string fixed_string = "table_scene_lms400.pcd";
std::string new_absolute_path = current_working_directory + fixed_string;
std::cout << "点云文件绝对路径: " << new_absolute_path << std::endl;

注意事项
使用VSCode调试时,该文件路径需要在当前打开的文件夹下,即在cpp目录下
直接运行可执行文件时,该文件路径需要在可执行文件Linx的文件夹下,即在cpp/build/bin目录下

1.尴尬的编译错误

error: expected initializer before ‘int

原因在于.h文件该函数声明的上一行函数声明结尾没有分号
解决方案
检查函数定义没有分号的部分增加分号

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值