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

博文

基于VS的RTKLIB编译学习过程及经验分享(三)

已有 4756 次阅读 2018-9-30 16:42 |个人分类:RTKLIB|系统分类:科研笔记

 

 RTKLIB编译形成GNSS定位开源库,RTKLIB开源库有着强大的GPS数据实时和后处理功能,RTKLIB还提供了很多底层的函数,因此我们可以考虑采用直接对源码进行编译输出标准DLL的方式供C调用。便编译平台选择VSRTKLIB库用的是网上开源的rtklib_2.4.3版本,编译的项目采用相对路径,即工程可移植到任何地方,方便以后使用。

RTKLIB的下载地址为:http://www.rtklib.com/

 

1、新建工程。首先,我们在VS2012下先新建一个win32dll项目(空项目)

                                              1.png

 

2、复制库文件。把在github上下载的rtklib2.4.3里的 “src文件夹文件复制到刚刚建立的RTKLIB工程项目文件所在目录下

3、添加库文件。为了与库文件结构保持一致,我们首先源文件文件夹,右击》添加》新建筛选器,接下来先添加头文件rtklib.h;然后是源文件》添加》现有项(添加除rtklib.h所有源文件,)创建“rcv”子文件夹并添加“src/rcv”目录下的所有源文件

4、初步编译解决方案管资源理器下,右击“RTKLIB”项目》生成,进行编译。因为RTKLIB是在C++ Builder编译器下写的,但是我们现在用VS进行编译,会出现一堆的错误,现在我们就一个个来解决。

 

错误类型1error C4996: 'strncpy': This function or variable may beunsafe. Consider using strncpy_s instead. To disable deprecation, use_CRT_SECURE_NO_WARNINGS. See online help for details.

解决:这是由于函数安全性问题,编译器已经给出建议,添加预编译指令【_CRT_SECURE_NO_WARNINGS】。我们打开调试下的项目属性,然后在 配置属性 -> C/C++ -> 预处理器 -> 预处理器定义 -> 编辑。在下面添加上【_CRT_SECURE_NO_WARNINGS

同样类似上面的错误,解决方法也类似,同样在预处理器定义-> 编辑。在下面添加上【_WINSOCK_DEPRECATED_NO_WARNINGS

错误类型2 error C2466: 不能分配常量大小为 0 的数组 

解决:这个主要是编译器的问题,用g++就没有问题,在vc中定义数组,需要一个常量值。

我们双击此错误,在有问题的数组定义处,按F12,看到数组大小定义的确实是0我们像上面一样预处理器定义里面加入【ENAGLO可解决此问题。

 

错误类型3error C1083: 无法打开包括文件:“rtklib.h”: No such file ordirectory    

解决:这是因为rcv里的文件找不到rtklib.h这个头文件。我们继续在项目属性里,在配置属性-> C/C++ 常规-> 附加包含目录-> 编辑 。在上面添加rtklib.h的相对路径(使用相对路径,工程才可以移植到任何地方,否则,换个目录路径,还是会提示此错误)在项目里的src找到rtklib.h并查看它的绝对路径在属性界面下的附加包含目录下,添加:【.\src

错误类型4error LNK2019: 无法解析的外部符号 _showmsg,该符号在函数 _convrnx 中被引用  

解决:一查showmsg这个函数如果在DLL中需要自己定义,rtklib里面已经做好了处理需要在预处理器里面加入【DLL即可,我们找到之前预处理器定义,在下面添加【DLL再找到项目属性,在配置属性 -> 链接器 -> 输入 -> 附加依赖项里添加 winmm.lib】和 ws2_32.lib

部分警告处理大多数是什么类型转换上的Warning,暂时没有影响,暂不处理

 

同样按照这篇文章的操作步骤仍然无法成功将rtklib编译为一个dll库文件,问题仍出在:

2.png

看了几篇文章试了几种方法这个问题一直无法得到解决。

经过与文章四对比发现,解决这个问题的关键就在于将RTKLIB-rtklib_2.4.3\app\rnx2rtkp文件夹下的rnx2rtkp.c文件放到项目的src文件夹下并加入到工程。再次编译错误就会得到解决。

 




https://blog.sciencenet.cn/blog-3386358-1138019.html

上一篇:基于VS的RTKLIB编译学习过程及经验分享(二)
下一篇:基于VS的RTKLIB编译学习过程及经验分享(四)
收藏 IP: 222.28.155.*| 热度|

0

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

数据加载中...
扫一扫,分享此博文

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

GMT+8, 2024-5-14 01:57

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部