VS配置RTKLIB(卫星定位开源代码)环境

@RTKlib代码调试教程-Visual Studio 2019

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

##RTKLIB-rtklib_2.4.3
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

@RTKlib代码调试教程-Visual Studio 2019


提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、RTKlib是什么?

由日本东京海洋大学开发(Tokyo University of Marine Science and Technology
),笔者查到最早的介绍是一篇日文的,《RTK-GPS用プログラムライブラリRTKLIBの開発?評価および応用》,其介绍的为RTKLIB ver.1.1。另有一篇论文《Development of the lowcost RTK GPS receiver with an open source program package RTKLIB》也可以看下。

其主要功能如下:

支持标准的GPS、GLONASS、QZSS和SBAS的为精确定位算法(目前此版本不支持Galileo系统)
支持多种动态、静态卫星定位方式(单点定位、DGPS、载波相位动态差分定位RTK、静态、移动基站、PPP)
支持全球定位导航系统的多种标准格式和协议

二、使用步骤

1.在Visual Studio 2019下新建项目,选择Windows控制台应用程序,项目所在路径自己选择,路径记为*\,项目命名为rtklib;

在这里插入图片描述

2.解压RTKLIB-rtklib_2.4.3安装包,将安装包下src文件夹复制到*\rtklib\rtklib\,并重命名为rtklibsrc;

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200922210701822.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMjA5OTc3,size_16,color_FFFFFF,t_70#pic_center在这里插入图片描述

3.在界面左侧右击rtklib项目,选择“添加”-“新建筛选器”,右击新建的筛选器并重命名为rtklibsrc;同样的,右击rtklibsrc,创建新的筛选器并命名为rcv;

在这里插入图片描述

4.右击rtklibsrc,选择“添加”-“现有项”,* \rtklib\rtklib\rtklibsrc\,全选所有的.c文件,点击“添加”,同样地,将* \rtklib\rtklib\rtklibsrc\rcv下所有的.c文件添加到(3)中新建的rcv下;

在这里插入图片描述

5.右击rtklib项目,选择“属性”,找到“预编译头”,在右侧选择“不使用预编译头”,点击确定;

在这里插入图片描述

6.Ctrl+F5运行程序,程序报错,要么按照说明中将fopen等对应改成fopen_s等,要么右击rtklib项目,选择“属性”,找到“预处理器”-“预处理器定义”,点击编辑,加上“_CRT_SECURE_NO_WARNINGS”,点击“确定”退出;

在这里插入图片描述
在这里插入图片描述

7.Ctrl+F5运行程序,程序报错:C1083 无法打开包括文件:rtklib.h: No such file or directory。此时,仍右击rtklib项目,选择“属性”-“常规”-“附加包含目录”,编辑选择*\rtklib\rtklib\rtklibsrc,例如笔者的路径为E:\PPP\program\RTKlib\rtklib\rtklib\rtklibsrc;点击确定退出。

在这里插入图片描述
在这里插入图片描述

8.Ctrl+F5运行程序,程序报错:C4996 ‘inet_addr’:Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings;类似(6),在“预处理器定义”中添加_WINSOCK_DEPRECATED_NO_WARNINGS,点击确定退出。

在这里插入图片描述

在这里插入图片描述

9.Ctrl+F5,程序报错:C4703 使用了可能未初始化的本地指针变量”sbs”。有两种办法:一、在报错的ephemeris.c的文件中定义“const sbssatp_t *sbs=NULL;”;二、项目“属性”-“C/C++”-“所有选项”-“SDL检查”-“否”。

在这里插入图片描述

10.Ctrl+F5,程序报错:LNK2019 无法解析的外部符号_imp_timeGetTime@0,该符号在函数_tickget中被引用。有两种解决方案:一,“属性”-“链接器”-“输入”-“附加依赖项”,添加winmm.lib和ws2_32.lib;二,在rtklib.cpp的文件头部分加上:

#pragma comment (lib,“winmm.lib”)
#pragma comment (lib,“ws2_32.lib”)

在这里插入图片描述

11.还有一个重要事项,必须要把rtklib.h头文件包含于rtklib.cpp中:

#include <rtklib.h>

12.Q:接下来是一个这样的错误 error C2466: 不能分配常量大小为 0 的数组 x:\xxxx\rtklibhelper\rtklibsrc\rinex.c

这个常量为0,那么不能进行编译,我们想上面一样在预编译器里面加入 ENAGLO
在这里插入图片描述

13.最重要的,程序报错:LNK2019 无法解析的外部符号_showmsg,该符号在函数_convrnx中被引用;

本文使用的方法是去RTKLIB-rtklib_2.4.3复制rnx2rtkp.c放到工程文件夹rtklibsrc下,然后在VS 里面去调用它
在这里插入图片描述

在这里插入图片描述
然后删去rnx2rtkp.c里面的main()函数,因为和rtklib.cpp里面的main冲突
在这里插入图片描述

总结

头一回去搭建这个环境还是遇到很多问题,我主要是在大牛基础上,找到的方法。

插入链接与图片

参考链接: https://blog.csdn.net/qq_35363018/article/details/101317869?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160075807619725271712163%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160075807619725271712163&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v3~pc_rank_v2-1-101317869.first_rank_ecpm_v3_pc_rank_v2&utm_term=Visual+Studio%E4%B8%8B%E6%89%93%E5%BC%80rtklib&spm=1018.2118.3001.4187