2021-07-27

1 篇文章 0 订阅

VS2013_WIN64_LIBLAS_编译记录

libLAS 是一个用来读写三维激光雷达数据(LiDAR) 的 C++ 库。在学习、科研和研发中都会广泛运用。

笔者在Win7 64位系统、CMake和VS2013编译libLAS库,在编译过程中走了一些弯路和遇到了不好问题,终于一一解决。现以博客的形式记录下来。供相关研究的同仁学习交流。

OSGeo4W也可以编译,但是感觉出来的库太臃肿了

编译前的准备:下载库
编译libLAS库还须要Boost、GDAL、TIFF和GeoTIFF四个库的支持,所以在编译libLAS前须要将所需的各个库进行下载和编译。
由于笔者电脑中已经配置了PCL库,当中包括Boost库,故在此就不单独配置Boost。
libLAS库下载:libLAS-1.8.0
GDAL库下载:gdal1110
LibTiff库下载:tiff-3.8.2
Libgeotiff 库下载:libgeotiff-1.2.5
网上有说编译libLAS库不须要GDAL、LibTIFF和Liggeotiff库的,在实际用Cmake编译时。提示须要GDAL、LibTIFF和Libgeotiff库,这三个库之间分别在各自的基础上作为其它库支撑。因此这三个库都须要编译并配置。

编译GDAL
先解压文件,打开cmd设置VS2013 64位编译环境工具,在cmd窗体中键入:cd /d E:\CPlusPlusLib\gdal-1.11.0 ,在此之前需要修改参数信息,打开文件夹E:\CPlusPlusLib\gdal-1.11.0下的namke.opt进行例如以下三个位置的改动。分别作用是配置vs2013编译器,系统位数和安装位置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
依次键入:
nmake /f makefile.vc
nmake /f makefile.vc install
nmake /f makefile.vc devinstall

编译成功
在这里插入图片描述
编译Tiff库
首先需要添加jepg的支持
如今打开文件夹:E:\CPlusPlusLib\tiff-3.8.2\libtiff中tiffconf.h.vc进行改动,把当中的 /* #undef JPEG_SUPPORT /,/ #undef OJPEG_SUPPORT*/ 中的凝视去掉。再删掉 E:\CPlusPlusLib\tiff-3.8.2\libtiff下的全部 .obj 文件。
在这里插入图片描述
打开cmd,打开cmd设置VS2013 64位编译环境工具,在cmd中分别键入:
cd /d E:\CPlusPlusLib\tiff-3.8.2
依次键入:
nmake /f makefile.vc
nmake /f makefile.vc install
nmake /f makefile.vc devinstall

编译成功会在E:\CPlusPlusLib\tiff-3.8.2\libtiff下生成对应的lib和dll文件

编译LIBGEOTIFF库
解压,组织一下文件夹,组织成下图的格式,把上一步编译的结果(E:\CPlusPlusLib\tiff-3.8.2\libtiff)所有文件全部拷贝到对应目录下
在这里插入图片描述
在这里插入图片描述
打开cmd,打开cmd设置VS2013 64位编译环境工具,在cmd中分别键入:
cd /d E:\CPlusPlusLib\tiff-3.8.2
依次键入:
nmake /f makefile.vc
nmake /f makefile.vc install
nmake /f makefile.vc devinstall

在这里插入图片描述
编译成功:
在这里插入图片描述
编译LIBLAS库

解压libLAS-1.8.0.tar.bz2,打开cmake,输入输出目录保持一致,一定要选择带win64的,之前白白编译一遍
在这里插入图片描述
修改的内容如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编译生成即可
在这里插入图片描述
编译成功后,会在目录下生成工程文件,打开工程文件,直接生成即可
在这里插入图片描述
在这里插入图片描述
编译成功的结果,用liblas.lib和liblas.dll即可
在这里插入图片描述
Windows下的库调用
使用的时候,全部使用临时目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//libLAS
#include "liblas\liblas.hpp"

/* read las */
int main()
{
	std::ifstream ifs;
	ifs.open("D:\\TEST.las", std::ios::in | std::ios::binary);
	liblas::ReaderFactory factory;
	liblas::Reader xjReader = factory.CreateWithStream(ifs);
	liblas::Header const& xjHeader = xjReader.GetHeader();
	//count
	int pCount = xjHeader.GetPointRecordsCount();
	//range
	double maxX = xjHeader.GetMaxX();
	double minX = xjHeader.GetMinX();
	double maxY = xjHeader.GetMaxY();
	double minY = xjHeader.GetMinY();
	double maxZ = xjHeader.GetMaxZ();
	double minZ = xjHeader.GetMinZ();
	double delatX = maxX - minX;
	double delatY = maxY - minY;
	double delatZ = maxZ - minZ;
	
	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值