GNSS - PPP软件 - GAMP 在VS2019/2022下完成调试、跑通程序(超详细!)

本文详细描述了如何在VisualStudio中设置和调试GAMP项目,包括新建项目、添加源码、配置预处理器和链接器选项、处理C4996、C4703和Stackoverflow错误,以及成功编译和运行的过程。
摘要由CSDN通过智能技术生成

目录

一、前期准备

二、调试详细步骤

1.VS中新建项目

2.复制源码至项目文件夹

3.将源码中“.c”文件和“.h”文件添加至项目指定位置

4.修改项目属性:

(1)【 配置属性 -> C/C++ ->预处理器 ->预处理器定义】添加如下

(2)【配置属性->链接器->调试->生成调试信息】 调整为 生成调式信息(/DEBUG)

(3)【配置属性-> C/C++ ->常规->调试信息格式】调整为 C7

5.添加多线程依赖库

(1)【配置属性-> C/C++ ->常规->附加目录】

(2)【配置属性->链接器->常规->附加库目录】

6.头文件dirent.h和unistd.h复制VS默认包含目录

7.将配置文件路径添加至命令参数

三、可能出现的错误

1.C4996

2.C4703

3.Stack overflow

四、成功编译运行、输出结果

五、参考博客


一、前期准备

周锋博士在2017年开源了一个项目:多系统 GNSS 非差非组合精密单点定位软件GAMP

GAMP: An open-source software of multi-GNSS precise point positioning using undifferenced and uncombined observations

下载地址:GAMP: An open-source software of multi-GNSS precise point positioning using undifferenced and uncombined observations

点击此处即可下载解压包:

下载完成之后,解压文件夹如下图所示:

二、调试详细步骤

1.VS中新建项目

打开VS2019/VS2022,新建一个Visual C++的空项目,保存路径和名称自行设定;

2.复制源码至项目文件夹

将GAMP -> mannual_GAMP -> GAMP_src -> Windows -> gamp_c 下的gamp_src文件夹复制到所建项目路径下,将测试数据也一并复制过来,即:GAMP -> mannual_GAMP -> Examples下的 2017244 文件夹

图片下面的那行红字书写有误,”原文件中的 gamp_src文件“

3.将源码中“.c”文件和“.h”文件添加至项目指定位置

【鼠标右键--添加--现有项】-- 选择 “复制到该项目中的gamp_src文件夹”中的 .c 和 .h 文件

添加完成后,如下图:

4.修改项目属性:

(1)【 配置属性 -> C/C++ ->预处理器 ->预处理器定义】添加如下

WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_N
O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3

     

(2)【配置属性->链接器->调试->生成调试信息】 调整为 生成调式信息(/DEBUG)

(3)【配置属性-> C/C++ ->常规->调试信息格式】调整为 C7

5.添加多线程依赖库

(1)【配置属性-> C/C++ ->常规->附加目录】

将GAMP\mannual_GAMP\GAMP_src\Windows\pthreads-w32-2-9-1-release目录拷贝到C盘
然后在项目中附加目录【配置属性-> C/C++ ->常规->附加目录】 添加

C:\pthreads-w32-2-9-1-release\Pre-built.2\include

(2)【配置属性->链接器->常规->附加库目录】

添加

C:\pthreads-w32-2-9-1-release\Pre-built.2\lib\x86

(3)【属性->链接器->输入->附加依赖项】

添加     

pthreadVSE2.lib

6.头文件dirent.hunistd.h复制VS默认包含目录

将GAMP -> mannual_GAMP -> GAMP_src -> Windows下头文件dirent.hunistd.h复制到vs默认包含目录,我的目录是:D:\Windows Kits\10\Include\10.0.22621.0\ucrt

方法:

在"gamp.h"中  ctrl+鼠标左键  选中“stdio.h”(或者其他VS自带的头文件),跳转至"stdio.h"文件,

鼠标右键单击 文件名,跳出选项卡,选择"打开所在的文件夹",即可跳转到头文件所在的文件,将dirent.hunistd.h这两个文件复制到该文件夹即可。

7.将配置文件路径添加至命令参数

【右键项目 ->配置属性 -> 调试 -> 命令参数】,将第2步的2017244文件夹下的配置文件 gamp.cfg 路径信息添加进去,我的gamp.cfg文件路径为:E:\GAMP_2023_12_11\Data\2017244\gamp.cfg

更改gamp.cfg文件中的路径信息:

注意:要在数据处理文件夹中创建一个结果文件夹,比如上图中配置文件的结果文件夹名是result,因此要创建一个result文件夹,如下图所示

至此,可以开始编译运行,可能会出现一些错误,可以参考下文。

三、可能出现的错误

1.C4996

错误C4996’sprintf’: This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.pppc:\users\cugch\desktop\gamp\test\ppp\ppp\gamp_src\gamppos.c374

解决方法:(最好下面两个都试试)

(1)【项目属性->配置属性->C/C+±>预处理器->预处理定义】添加两个宏

_CRT_SECURE_NO_DEPRECATE
_SCL_SECURE_NO_DEPRECATE

(2)屏蔽出4996错误,即在头文件之前加上以下一行代码#pragma warning(disable:4996)  

注:我使用了这个方法,然后就没有该错误了

2.C4703

错误C4703使用了可能未初始化的本地指针变量“lam”ppp gamppos.c571

解决方法

转到 lam 定义发现确实没有初始化,而是在后面直接赋值;修改代码,初始化的时候指向NULL;

3.Stack overflow

0x00007FF7AA935407 处有未经处理的异常(在 GAMP_2023_12_11.exe 中): 0xC00000FD: Stack overflow (参数: 0x0000000000000001, 0x00000094B1403000)。

出现位置是该行:

这个问题出现后我没有解决,但是后续我在解决其他问题的时候这个问题又消失了,我也不清楚怎么弄的,有这个问题的朋友可以先解决其他问题或者重启电脑或者等短时间再编译,说不定就好了。

四、成功编译运行、输出结果

修改完上述错误之后,点击”本地Windows调试器“运行程序,注意选择 x64 

在项目属性页,配置选择"活动(Debug)",平台选择"Win32"

运行窗口如下,可见其正在处理第一个观测值文件:

执行完毕之后,可见整个程序运行时间为94.169s,如下图所示:

输出文件夹 result 中存放着刚刚生成的数据信息:

至此,整个调试过程全部完成,后续可以自行下载数据进行处理。

五、参考博客:

VS中报错C4996 scanf错误&错误介绍&解决方案_c4996怎么解决-CSDN博客

GAMP编译点滴_函数使用堆叠的 "24580" 字节。请考虑将一些数据移动到-CSDN博客

GAMP|Visual Studio 2019环境下配置GAMP-CSDN博客

100-GAMP安装调试细则_gamp调试全部出现pdop错误-CSDN博客

        

  • 19
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
大地测量计算工具集 【软件功能】 该软件共包含近20项常用大地测量专业计算功能,部分项目功能含多个功能子项。 1)不同坐标形式转换 大地坐标与空间直角坐标的互换;空间直角坐标与正交椭球面坐标的互换;空间直角坐标与站心切平面坐标系的互换;大地坐标、空间直角坐标与球坐标的互换;高斯投影正反算与邻带换算;通用墨卡托投影正反算等。 2)不同坐标系转换 布尔莎模型七参数的求解(最小二乘法、抗差最小二乘法);不同坐标系转换;仿射变换参数求解;仿射变换计算。 3)参考椭球基本常数计算 由椭球基本几何常数计算其他几何常数,计算第一、第二辅助函数;计算卯酉圈、子午圈曲率半径;计算任意曲率半径和平均曲率半径;由椭球基本定义参数(4个)计算其他所有几何常数和物理常数。 4)参考框架变换 同一框架不同历元之间的变换;转换参数历元处不同框架间站速变换;转换参数历元处不同框架之间的坐标变换;历元速度坐标综合变换等。 5)大地问题解算 大地问题正反算,支持贝塞尔方法、高斯平均引数方法和韦森特方法。 6)距离归算 地面斜距归算至参考椭球面;椭球面边长投影至高斯平面;由两点位置计算各类大地方位角和各类边长。 工程控制网长度变形评估,支持标准3度带、任意投影、抵偿面投影、抵偿面任意投影等变形评估类型;支持测区四至信息加载;可以计算最大变形量,并进行限差审核。 7)控制网平差计算 水准网平差,支持最小二乘、粗差探测、自由网平差和拟稳平差; 三角高程网平差,支持最小二乘、粗差探测; GPS网平差,支持GAMIT和TGO基线解算结果转换;支持最小二乘、粗差探测、自由网平差和拟稳平差。 8)IGS观测数据与精密星历下载 支持精密星历、精密钟差、导航星历和原始观测文件的下载、解压和格式转换;支持多天多站下载模式;支持多线程下载;支持站点列表文件导入; 9)GNSS观测数据质量检查 支持GPS和GLONASS观测文件和星历;支持高度角设定;支持摘要生成;含有HOR图、IOD、ION、MP1、MP2、SN1、SN2图形的生成,支持按卫星编号绘图。 10)RTK定位结果精度分析 可应用于单点多历元各类XYZ坐标类型的点位精度分析,支持外部精度分析和内部精度评估;支持坐标转换;支持三维精度、平面精度的计算;支持数据剔除原则设定。 11)GNSS水准高程拟合 支持移动曲面法(含平面、二次曲面、加权平均法);支持整体拟合法(平面、二次曲面、三次曲面);支持EGM96和EGM2008;支持按不同地区不同点位分布情况进行算法优选与评估;支持似大地水准面模型文件的转换与生成;支持离散点批量水准拟合插值计算。 12)时间标示法变换 历书时、儒略日、GPS时、年积日等之间的转换;GNSS观测文件与星历文件名称计算。 13)图幅编号计算 由点位计算所在图幅号;由图幅号计算图幅范围;支持传统图幅编号和标准图幅编号;地形图图幅编码计算,由点位获得国标图幅编号和地形图幅编号,由图幅范围计算地形图幅集合。 14)…… 拟加入的功能: (1)水平网概算与平差。 (2)精密单点定位计算。 (3)GPS网型测前精度评估。 (4)GNSS星历预报。 (5)…… 【使用方法】 软件无广告、无注册码、无病毒、无任何功能限制,所有用户手中的软件和作者自己使用软件是一样的。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code_ADing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值