chaoshu的个人博客分享 http://blog.sciencenet.cn/u/chaoshu

博文

VS2017编译GAMP流程

已有 4947 次阅读 2020-3-5 13:16 |个人分类:GNSS|系统分类:科研笔记

周锋博士在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

image.png

2、项目设置

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

image.png

    2)将GAMP\mannual_GAMP\GAMP_src\Windows\gamp_c\gamp_src目录复制到刚刚新建的项目中

image.png

    3)分别在项目中将头文件.h和源文件.c文件添加相应位置

image.png

image.png

    4)修改项目属性:

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

    WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_N

O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3 

image.png

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

image.png

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

image.png

    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 

image.png

    【配置属性->链接器->常规->附加库目录】添加 C:\pthreads-w32-2-9-1-release\Pre-built.2\lib\x86 

image.png

    【属性->链接器->输入->附加依赖项】添加 pthreadVSE2.lib

image.png

    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

image.png

    解决方法:

    【项目属性->配置属性->C/C++->预处理器->预处理定义】添加_CRT_SECURE_NO_DEPRECATE和_SCL_SECURE_NO_DEPRECATE两个宏

image.png

    2)从新运行,出现错误:

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

image.png

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

image.png

image.png

    这估计是Linux的c语言和Windows的区别吧!修改完成以后,再重新编译,成功!

image.png




https://blog.sciencenet.cn/blog-858128-1221919.html

上一篇:Android Studio获取得到SHA1码
下一篇:PRIDE PPPAR生成近似坐标脚本rtk2xyz.sh运行错误error: rnx2rtkp not found
收藏 IP: 171.114.89.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-24 16:00

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部