GNSS - PPP软件 - GAMP 在VS2019/2022下完成调试、跑通程序(超详细!)
WIN32;_DEBUG;_CONSOLE;O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3。
目录
(1)【 配置属性 -> C/C++ ->预处理器 ->预处理器定义】添加如下
(2)【配置属性->链接器->调试->生成调试信息】 调整为 生成调式信息(/DEBUG)
(3)【配置属性-> C/C++ ->常规->调试信息格式】调整为 C7
6.头文件dirent.h和unistd.h复制VS默认包含目录
一、前期准备
周锋博士在2017年开源了一个项目:多系统 GNSS 非差非组合精密单点定位软件GAMP
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.h
和unistd.h
复制VS默认包含目录
将GAMP -> mannual_GAMP -> GAMP_src -> Windows下头文件dirent.h
和unistd.h
复制到vs默认包含目录,我的目录是:D:\Windows Kits\10\Include\10.0.22621.0\ucrt
方法:
在"gamp.h"中 ctrl+鼠标左键 选中“stdio.h”(或者其他VS自带的头文件),跳转至"stdio.h"文件,
鼠标右键单击 文件名,跳出选项卡,选择"打开所在的文件夹",即可跳转到头文件所在的文件,将dirent.h
和unistd.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博客
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)