||
周锋博士在2017年开源了一个项目:多系统 GNSS 非差非组合精密单点定位软件GAMP
GAMP: An open-source software of multi-GNSS precise point positioning using undifferenced and uncombined observations。
https://www.ngs.noaa.gov/gps-toolbox/GAMP.htm
最近在准备读博事宜,所以深入学习一下GAMP软件,首先需要对该软件进行编译,主要参考官方开源项目的说明文件,但是因为周锋博士采用的是VS2010编译,我的电脑是VS2017的,所以稍微有一点区别,记录下整个编译过程,以备日后之用。
1、所需源代码和依赖库文件所在位置:
GAMP\mannual_GAMP\GAMP_src\Windows
2、项目设置
1)打开VS2017,新建一个Visual C++的空项目,保存路径和名称自行设定;
2)将GAMP\mannual_GAMP\GAMP_src\Windows\gamp_c\gamp_src目录复制到刚刚新建的项目中
3)分别在项目中将头文件.h和源文件.c文件添加相应位置
4)修改项目属性:
【 配置属性 -> C/C++ ->预处理器 ->预处理器定义】添加如下
WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_N
O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3
【配置属性->链接器->调试->生成调试信息】 调整为 生成调式信息(/DEBUG)
【配置属性-> C/C++ ->常规->调试信息格式】调整为 C7
5)添加多线程依赖库
将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
【配置属性->链接器->常规->附加库目录】添加 C:\pthreads-w32-2-9-1-release\Pre-built.2\lib\x86
【属性->链接器->输入->附加依赖项】添加 pthreadVSE2.lib
6)添加Linux下C程序头文件unistd.h
GAMP\mannual_GAMP\GAMP_src\Windows目录下面的两个文件unistd.h、dirent.h复制C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include 下面;
3、编译及error解决
完成以上设置和添加以后,点击【生成->生成解决方案】出现大量错误:
1)错误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
解决方法:
【项目属性->配置属性->C/C++->预处理器->预处理定义】添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE两个宏
2)从新运行,出现错误:
错误C4703使用了可能未初始化的本地指针变量“lam”ppp gamppos.c571
解决方法:转到lam定义发现确实没有初始化,而是在后面直接赋值;修改代码,初始化的时候指向NULL;
这估计是Linux的c语言和Windows的区别吧!修改完成以后,再重新编译,成功!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-9 07:02
Powered by ScienceNet.cn
Copyright © 2007-2025 中国科学报社