rtklib学习笔记1:在Visual Studio 2019中调试rtklib 2.4.3程序

一、rtklib简介

        rtklib是由日本的Tomoji Takasu开发的开源GNSS定位软件,是卫星导航定位领域的最著名的软件之一。目前rtklib可下载的最新版本为rtklb 2.4.3,支持GPS、GLONASS、Galileo、QZZ、Beidou和SBAS系统,下载地址为:GitHub - tomojitakasu/RTKLIB at rtklib_2.4.3

二、调试过程

        深入了解和学习rtklib的基础是要在编译器中搭建项目工程,阅读和剖析不同函数中的程序结构和专业方法。本人作为卫星定位和定轨方面的初学者,尝试了几种网上的调试方法,最终调试通过,下面分享一下详细的过程。

1. 准备工作

  1. 安装 Visual Studio 2019
  2. 下载 rtklib 2.4.3

2. 创建项目

打开VS2019,点击创建新项目。

创先新项目,选择第一个空项目。

创建新项目的时候可以选择一个空文件夹,将解决方案和项目放在统一目录中我勾选上了。点击创建即可。

3. 导入文件

搭建好的空项目是这样的,什么都没有。

下载好的rtklib文件夹解压后结构如下图,需要将下图中显示的src文件夹复制到刚才新建的项目文件夹中。

 这里在复制过去之后很多教程都让改了名字,个人感觉应该没影响但是还是改了,把“src”改为“rtklib_src”。

然后还需要把rtklib的主函数复制到rtklib_src文件夹中,主函数的位置在RTKLIB-rtklib_2.4.3\app\consapp\rnx2rtkp,主函数的名字为“rnx2rtkp.c”。复制过去之后很多教程将该文件改为“main.c”,我个人没有改,也不影响最后的编译成功。rnx2rtkp.c的文件位置如下图。 

首先在源文件中添加名为“src”的筛选器,再在src筛选器下面添加名为“rcv”的筛选器,结果如图。

接下来分三步导入rtklib_src文件夹中的所有文件:

  1. 导入rtklib_src文件夹中所有.c文件至src筛选器中,包括rnx2rtkp.c,注意不包含头文件rtklib.h文件;
  2. 导入rtklib_src\rcv中的所有文件至src\rcv筛选器中;
  3. 导入rtklib_src文件夹中的rtklib.h文件至头文件中,注意不是源文件。

导入之后的项目结构如下图。

4. 修改部分代码中的内容

把主函数rnx2rtkp.c文件中的#include "rtklib.h"修改为#include "./rtklib.h"

把在src/rcv文件夹中的.c文件中的#include "rtklib.h"修改为#include "../rtklib.h”

注意一定不是只改一个rnx2rtkp.c一个文件!另外在使用VS2019全局替换功能时候要注意替换错误,比如“./rtklib”替换成了“./../rtklib”!(个人操作中遇到的问题)。

这一步是我在大部分教程中没有看到的关键步骤

参考了科学网—LPJ6378137的博客 - 李鹏杰这篇文章

5. 项目属性设置

打开项目属性,在链接器下的输入中的附加依赖项中添加依赖库winmm.lib和ws2_32.lib。

 将常规中的目标文件名改为rnx2rtkp。

设置高级中的字符集为使用多字节字符集。 

将C/C++中的 SDL检查设置为否,附加包含目录添加.\src。

C/C++中的预编译头设置为不使用预编译头。 

 在C/C++中的预处理器中添加如下内容:

_LIB
_CRT_SECURE_NO_WARNINGS
_WINSOCK_DEPRECATED_NO_WARNINGS             
ENAGLO
DLL

添加完成之后如下图。

 6. 修改指针变量未初始化的错误

完成以上步骤之后,会报“使用了可能未初始化的本地指针变量“sbs”的错误,解决方式是对指针变量进行初始化,将ephemeris.c文件中的第579行改为“const sbssatp_t *sbs=NULL;”。

7. 编译通过

8. 存在的警告

虽然可以成功编译,但是还存在几种警告:

  1. warning C4101: “rs”: 未引用的局部变量;
  2. warning C4244: “return”: 从“double”转换到“int”,可能丢失数据;
  3. warning C4244: “=”: 从“double”转换到“float”,可能丢失数据;
  4. warning C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型;

本人将在下一篇笔记中解决上述警告。

        非常基础的rtklib编译流程,各位学术大牛可以忽略。

  • 16
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 在Linux QT平台上调试RTKLIB源码的过程,首先需要确保已经正确安装了QT和相关的开发环境。接下来,可以按照以下步骤进行调试: 1. 编译RTKLIB源码:根据提供的RTKLIB源码,可以使用QT的编译工具链进行编译。在终端进入RTKLIB源码的目录,输入以下命令进行编译:qmake && make。 2. 配置调试环境:在QT开发环境,打开RTKLIB的工程文件(通常为.pro文件)。在项目设置,确保已经选择了正确的编译器和平台。 3. 设置断点:在源码选择要调试的关键代码行,右键选择“设置断点”。这样,在程序运行到该行时,程序会自动停下来,方便我们查看变量的值和程序的执行流程。 4. 启动调试:点击QT开发环境调试按钮,开始运行调试。如果一切正常,程序将在第一个断点处停下来。 5. 单步调试:使用调试工具栏上的按钮,逐行执行代码。可以观察变量的值变化并检查程序流程。特别是在关键算法执行时,可通过单步跟踪查看每一步的结果。 6. 查看变量值:在QT的调试窗口,可以查看已设置断点处的变量的值。可以在变量窗口、观察窗口、局部窗口等查看不同变量的值。 7. 针对问题进行调试:如果在调试过程遇到问题,可以重新设置断点或添加更多的断点,以深入了解错误发生的原因。通过监视变量、查看堆栈和跟踪函数调用,可以进一步分析问题的根源。 8. 修正问题:根据调试的结果,修改代码的错误或优化算法。可以多次重复以上步骤,直到对RTKLIB源码进行了完整的调试和修改。 总之,在Linux QT平台上调试RTKLIB源码需要借助QT的调试工具和平台功能,结合源码分析和算法设计,以解决问题和优化算法为目标进行调试。 ### 回答2: 要在Linux Qt平台上调试RTKLIB源码,首先需要安装好Linux操作系统和Qt开发环境。然后按照以下步骤进行调试: 1. 下载RTKLIB源码:可以从RTKLIB官方网站上获得最新的源码压缩包,解压到本地目录。 2. 创建Qt项目:在Qt Creator新建一个Qt项目,选择C++的控制台应用程序模板。 3. 将RTKLIB源码添加到项目:将RTKLIB源码文件夹需要用到的文件添加到Qt项目,可以通过Qt Creator的“添加现有文件”功能或者手动将文件复制到项目目录下。 4. 配置项目参数:通过Qt Creator的项目配置界面,设置项目的编译选项、链接库等参数。根据RTKLIB的编译说明,设置好相关的宏定义和编译选项,以适应Qt项目的编译环境。 5. 编写调试代码:在Qt项目编写你需要调试的代码,根据RTKLIB的功能需要,调用相关的函数和类进行实现。 6. 编译和调试:通过Qt Creator的编译和调试功能,编译项目并启动调试器。可以设置断点、跟踪变量的值,查看程序的执行流程,以及排查代码的bug。 7. 调试过程注意事项:在调试过程,需要关注程序的输出信息和调试器的提示,根据需要进行断点设置和变量跟踪。如果出现错误或异常,可以通过调试器的功能找出问题的所在,然后进行修复和调试。 通过以上步骤,你就可以在Linux Qt平台上调试RTKLIB源码了。注意,调试RTKLIB源码需要一定的C++编程和调试经验,对RTKLIB的原理和功能也需要有一定的了解。 ### 回答3: 在Linux Qt平台上调试RTKLIB源码需要以下步骤: 1. 下载RTKLIB源码:首先需要从RTKLIB官方网站上下载源码的压缩包。解压缩该压缩包后,您将得到包含RTKLIB所有文件和文件夹的目录。 2. 安装Qt开发环境:在Linux系统上安装Qt开发环境,这将为您提供运行和调试RTKLIB源码的必要工具和库。您可以从Qt官方网站下载安装程序,根据指南进行安装。 3. 创建Qt项目:使用Qt Creator或其他Qt开发环境创建一个新的Qt项目,设置项目的名称和目录。 4. 导入RTKLIB源码:在新创建的Qt项目,导入RTKLIB源码的所有文件和文件夹。可以直接将源码文件复制粘贴到项目目录,或者通过IDE的导入功能导入源码文件。 5. 配置编译选项:配置项目的编译选项,确保正确设置了RTKLIB源码的路径和依赖库。这通常包括添加源码的路径到项目配置文件,并链接RTKLIB所需的库文件。 6. 构建项目:通过Qt开发环境的构建功能编译和构建项目。这将生成可执行文件,用于运行和调试RTKLIB源码。 7. 设置断点和调试:使用Qt开发环境的调试功能,在源码设置断点,以便在运行时暂停程序的执行。通过单步调试和观察变量的值,可以逐步跟踪程序的执行流程,查找和排除代码的错误。 8. 运行和测试:在Qt开发环境运行已编译的可执行文件,并进行测试和调试。通过观察输出结果和调试信息,您可以验证程序的准确性,检查是否正确实现了RTKLIB的功能。 以上是在Linux Qt平台上调试RTKLIB源码的一般步骤。根据需要,您可能还需要设置其他环境和工具来加速调试过程,例如使用模拟器或实际硬件设备进行测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值