首先,什么是LCM?

简而言之,是一个UDP传输方案。也就是在UDP外围做了一层封装,使得数据的传输变得比较的方便。

其次,一般在什么环境下用LCM?

在无人车系统中。而且操作系统多为linux,因此在linux编译这玩意据说有种水到渠成的感觉。

最后,为什么要在windows下来搞这套东西,而且又要在32搞定的情况下在64位上再搞一遍?

我不告诉你。

因为应用场景比较小众,估计这注定是一篇浏览量很悲剧的文章。然而哪怕只有一个人用到,这篇文章也有意义,因为网上的中文材料关于64位编译LCM这部分可以说是空白的,英文材料也很少,因此估计能帮你节省下少则一天,多则一月的时间。

废话就说到这,下面上流程:

参考网站:https://github.com/lcm-proj/lcm/issues/99(这个网页几乎包含能参考的所有信息,请无论如何先仔细看一遍)

安装python(64位版本)

地址:https://www.python.org/downloads/release/python-2715/

本人装的是2.7.15版本

装完之后添加环境变量

PYTHONPATH=C:\Python27;C:\Python27\Scripts;C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk;(注意这里是你安装Python的实际位置)

把PYTHONPATH环境变量添加到Path环境变量中,即

Path=%PYTHONPATH%

弄完之后可以在控制台输入python测试下是不是成功配置了。

到此关于Python相关的配置就完成了。

下载安装CMake

地址:https://cmake.org/download/

弄完后把bin文件夹也添加进环境变量Path中,也同样可以在控制台输入CMake测试下:

下载并安装MSYS2(小型GNU环境,为后面使用GCC编译glib2做平台性质的准备)

地址:http://www.msys2.org/

先换源(速度从龟速到正常),具体参考下面博客:https://blog.csdn.net/liyuanbhu/article/details/56496501

环境初始化,参考下面博客(本人感觉不做应该也可以,有勇士请验证下):

https://blog.csdn.net/yehuohan/article/details/52090282

因为后面就用到mingw-w64,因此直接安装mingw-w64的环境包

pacman -S mingw-w64-x86_64-toolchain

安装glib2

pacman -S glib2 glib2-devel mingw-w64-x86_64-glib2

下载LCM源码包,地址:https://github.com/lcm-proj/lcm

在github文件夹下载的源码包下新建一个叫做build的文件夹。

用管理员权限打开控制台然后cd到这里,输入下面的命令(本人要编译的是VS2017的64位版本,因此命令写为“Visual Studio 15 2017 Win64”,这里请做相应修改。另外,具体路径也要做修改)

cmake .. -G"Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=Release -DLCM_ENABLE_TESTS=OFF -DCMAKE_INSTALL_PREFIX=../build -DGLIB2_GLIBCONFIG_INCLUDE_DIR="E:\lcm\msys64\mingw64\lib\glib-2.0\include" -DGLIB2_GLIB_INCLUDE_DIR="E:\lcm\msys64\mingw64\include\glib-2.0" -DGLIB2_GLIB_LIBRARY="E:\lcm\msys64\mingw64\lib\libglib-2.0.dll.a" -DGLIB2_GLIB_RUNTIME="E:\lcm\msys64\mingw64\bin\libglib-2.0.dll"

完成上面一步会在build文件夹下生成VS的文件,打开"lcm.sln",直接编译,发现出现了大量的错误。

可以发现都跟"mswsock.h"这个文件相关,看文件位置发现其是系统相关文件,不应该出错,因此猜测是头文件的相互包含出错。定位到包含该头文件的地方,发现只有“WinPorting.cpp”包含该文件。

相关程序段如下:

#define _WIN32_WINNT 0x0501
#include <Mswsock.h>
#include <stdio.h>
#include <winsock2.h>

修改为:

#define _WIN32_WINNT 0x0501
#include <winsock2.h>
#include <Mswsock.h>
#include <stdio.h>

再次编译,主体OK了。

残留问题如下:

因为是跟go相关的东西,没有用到,所以本人选择了无视,如果需要处理,下面这个文章能解决第一个问题,

https://blog.csdn.net/sinat_36053757/article/details/68487662?locationNum=3&fps=1

至于F_OK这个问题,参考网址如下:

https://blog.csdn.net/u012005313/article/details/50688257

就是在相应的位置把加上。

#define F_OK 0 

就可以了

完成编译之后,可以将工程里面的“lcm-example”设为启动项,然后把下面的dll扔进“liblcm-test”目录,然后运行即可看到结果


另外写文章累人,写代码掉头发,如果觉得文章有帮助,哈哈哈

LCM通信包在Windows 64位环境下的编译相关推荐

  1. linux下编译openjdk7,Ubuntu 14.04.3 64位环境下OpenJDK7编译

    系统环境:Ubuntu 14.04.3 -amd64 in VMWare 1.安装openjdk7依赖 sudo apt-get build-dep openjdk-7 sudo apt-get in ...

  2. win10,64位环境下curl7下载安装和配置详细图文教程(亲测有效)

    win10,64位环境下curl7下载安装和配置教程 一.前期准备: (1)windows10,64位: (2)python3.8 二.下载: 三.安装: 四.环境变量配置: (1)新建 ==CURL ...

  3. Win7系统64位环境下使用Apache——下载mod_jk

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/70313329 本文出自[我是干勾鱼的博客] 之前在几篇文章: Win7系统64位 ...

  4. python2.7安装教程win7_win7 64位环境下,为python2.7 安装pip

    第一步: 安装python并配置好环境变量 第二步: 下载setuptools源码setuptools-38.5.1.zip,地址:https://pypi.python.org/pypi/setup ...

  5. 实况10硬盘版在win7,64位环境下如何使用

    在XP,或者win7,32位环境下,实况10免安装版只需要双击一个注册信息,将数据信息添加到注册表中即可,但是在64位中,这样做后,打开软件会弹出提示:the game is not properly ...

  6. windows7 64位环境下安装apache+mysql5.5+php7经验

    安装环境时遇到的一写问题现总结如下: 整体都是  windows64位环境下  vc14 首先电脑上安装的是vs2015环境 安装顺序: 1.首先安装apache2.4安装包,解压即可 2.php7压 ...

  7. 外网win10 64位环境下 为内网win7 32位安装三方包的最靠谱手段:python64位、32位全安装。...

    经过一周的各种折磨,如题.以下是我的经验和教训. 我的外网是win10 64位,内网环境win7 32位.由于未知原因,anaconda无法安装!!! 其实最靠谱的安装三方包的还是whl包.但是很有可 ...

  8. Windows7 64位环境下Python-igraph环境配置

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 其实配置很简单,但是网上的几个都不咋靠谱.如果并非利益相关,可以不用阅读本文,但是http:/ ...

  9. 64位环境下解决apache对中文网址的支持问题

    转自:http://hi.baidu.com/ct543/blog/item/938cdb58c02ae28f800a18d5.html 此方案用于解决apache软件对中文网址的支持问题,例如支持w ...

最新文章

  1. 别人总结的批处理技巧
  2. 【2013年总结】 向着IT前进
  3. 可以不封神,但是不能不修炼——亚特兰蒂斯之神特斯拉的启示
  4. 机器学习入门系列三(关键词:逻辑回归,正则化)
  5. prometheus的搭建与使用
  6. 赵鹏计算机专业,安徽大学计算机科学与技术学院导师介绍:赵鹏
  7. MySQL的sql_mode解析与设置
  8. Swagger自动接口文档生成框架————springboot整合swagger总结
  9. 如何在Linux中将用户添加到组
  10. php file_get_contents()请求某个链接
  11. oracle 还原归档,ORACLE RMAN 还原归档日志
  12. 前端实现动画的6种方式详解
  13. android 获取sim卡信息list_提醒:手机要设置SIM卡密码!如何设置?有何用处?攻略来了...
  14. 自己动手打造属于自己的智能家居(二)
  15. windows下安装完MySQL,为什么cmd不识别命令?
  16. 4dda在linux中的意思,LINUX基础学习之基础命令(4)和 文件的inode信息 --2019-11-28...
  17. Oracle客户端工具安装(PL/SQL Developer 和 instantclient)
  18. AutoCAD2010安装教程
  19. TV版应用包名 TV常用apk包名 (当贝市场下载)
  20. python爬取微博恶评_用python写网络爬虫-爬取新浪微博评论

热门文章

  1. Linux下Ngnix的安装与配置
  2. Unity从零单排 day #1
  3. 网络 http(基于tcp协议)
  4. 3D模型下载 - 3D模型免费下载
  5. 2016全国大学生信息安全竞赛-web-WriteUp
  6. SQL关键字 union、intersect、except用法
  7. AppEx LotWan广域网加速系统为办公系统进行网络加速
  8. 提分必练,中创教育PMP全真模拟题分享
  9. python助你高效办公_高效办公必备:python—— 30分钟帮你干完一天的工作!
  10. fusioncharts mysql_支持XML和JSON数据的图表控件FusionCharts XT