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

博文

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

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

 

在开始前首先解决库的问题-- pthread.h

 

我所下载的版本是

                                              6.png

 

配置步骤为:

a、将\pthreads-w32-2-9-1-release\Pre-built.2\lib\x64下的所有文件(pthreadVC2.liblibpthreadGC2.a)复制到VS2010安装目录下Microsoft Visual Studio 10.0\VC\Lib

b、将\pthreads-w32-2-9-1-release\Pre-built.2\include\pthread.h复制到Microsoft Visual Studio 10.0\VC\include

c、将\pthreads-w32-2-9-1-release\Pre-built.2\dll\x64的所有文件(pthreadGC2.dllpthreadVC2.dll)复制到Microsoft Visual Studio 10.0\VC\Bin

 

然后开始创建工程:

1、新建一个空的工程:新建一个visualC++下的空项目

1.png

2、添加文件

a在工程目录下新建文件夹src,拷贝RTKLIB2.4.3下的src下面的所有文件和rcv文件夹到src下面,同时将app\str2str下面的str2str.c拷贝到src下面,作为主程序入口

b分别添加头文件和源文件到工程中

3、设置项目属性

选择:项目 > 属性。

设置一:配置属性 >链接器 > 调试 >生成调试信息:是

设置二:配置属性 > C/C++ > 常规 > 调试信息格式:C7

2.png

编译一下,发现一堆问题,下面一一解决。

1错误77error C1083: 无法打开包括文件:“rtklib.h”: No such file or directoryd

解决思路这是因为没有将rtklib.h头文件的目录包含在项目里的缘故。

将以下路径加入到include目录下(在项目上右键->配置属性->VC++目录->包含目录Include Path选择rtklib.h所在的目录(src即可)。

2错误15error C1083: 无法打开包括文件:“sys/time.h”: No such file or directory sys/time.h

解决思路这是linux下面的gcc里面的库函数,不能在VS中使用;RTKLIB中有大量的这样的库,所以我们要设置预处理WIN32

配置属性 > C/C++预处理器 > 预处理定义:WIN32_CRT_SECURE_NO_DEPRECATE

3错误1error C2065: “SIGPIPE”: 未声明的标识符

解决思路找到且定义的位置将其注销掉

4错误1error C2466: 不能分配常量大小为 0 的数组

解决思路在预编译器里面加入 ENAGLO

5错误31error LNK2019:无法解析的外部符号 __imp__accept@12,该符号在函数 _accept_nb 中被引用

解决思路添加附加库[连接器->输入->附加依赖库]添加winmm.lib, ws2_32.lib

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

解决思路一查showmsg这个函数如果在DLL中需要自己定义,rtklib里面已经做好了处理需要在预处理器里面加入DLL即可

最终预处理器定义内包含:
3.png

7无法将参数 1 “char [1024]”转换为“LPCWSTR”

选择"项目->属性->配置属性->常规->字符集->未设置",将UNICODE关闭就可以了···

8无法解析的外部符号 __imp__timeGetTime@0

没有加入相应的链接库,添加#pragma comment(lib, "winmm.lib")#pragma comment(lib, "ws2_32.lib")应该就可以了。

 

 

 

 

完全按照上述步骤,最后出现了如下新的问题:

4.png

不知道是不是rtklib又更新了的缘故,还是什么头文件没有添加???

经思考应该是str2str.c这个文件的问题,因此尝试将此文件移除,并借鉴http://blog.sina.com.cn/s/blog_71d6b76b0102xcg9.html#cmt_5B06A265-79C20602-1854ED4FB-9B2-8C5

这篇文章的说明,将rnx2rtkp.c这个文件添加到项目的源文件中),并将rnx2rtkp.c改名为main.c。(之所以选择这个c文件,是因为rnx2rtkprtkpostCUI版本,主要功能是事后处理,今后调用rtklib中的函数时可以将main函数中原有内容注释掉,另写其他函数。如可简单写个坐标转换的功能,调用了添加进来的c文件中的函数,结果运行成功

 double BLH[3] = {45.0*D2R, 123.0*D2R ,900.0 };

 double XYZ[3] = {0.0, 0.0, 0.0};

 pos2ecef(BLH, XYZ); 

 printf(" X=%f\n Y=%f\n Z=%f\n",XYZ[0],XYZ[1],XYZ[2]);

 getch();

5.png

http://blog.sciencenet.cn/home.php?mod=space&uid=858128&do=blog&id=990823

http://blog.sina.com.cn/s/blog_71d6b76b0102xcg9.html#cmt_5B06A265-79C20602-1854ED4FB-9B2-8C5

这两篇文章大致相同,较为完整的整合了rtklib编译过程中可能会遇到的所有问题,并且所创建项目也是VC++的空项目,可以作为参考进行借鉴。




http://blog.sciencenet.cn/blog-3386358-1138020.html

上一篇:基于VS的RTKLIB编译学习过程及经验分享(三)
下一篇:总结与补充

0

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

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

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2019-9-23 05:13

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部