LASlib在VS2010平台下的完美编译
1. 简要介绍
LASlib是进行点云数据读写的理想工具,由北卡计算机学院的Martine isenburg编写。基于该开源库,作者同时开发了LASTool,包含了一系列点云数据处理的工具。具体参见项目官方网站。LASlib在官网上的描述如下:
We provide an easy-to-use, ultra-light-weight, very efficient C++ programming API called LASlib (with LASzip DLL) that implements reading and writing of LiDAR points from and to the ASPRS LAS format (version 1.0-1.3) as well as its — losslessly compressed, but otherwise identical twin — the LAZ format (see below). All source code (LGPL) is included.
从介绍可以看出,LASlib提供了LAS格式的LiDAR点云数据的高效读写接口。因此,对于一些常用的LAS格式的数据操作,LASlib的开源、高效等特性,无疑使其成为一个重要的开发库。
由于作者习惯基于早期的VC 6.0平台进行开发。因此,官方网站的LASlib源码包仅仅提供了VC 6.0版本的工程文件。如果需要在其他平台开发或者考虑编译64位版本开发库,如VS 2010或者VS2013,那么就需要进行工程转换。但是,实际转换过程中会造成一些意想不到的错误。本文就基于实际操作,分享LASlib在VS2010上的64位开发库的编译配置经验。
2. 工具与源码
开发工具:VS 2010
源码:建议从逛网下载LASTool, 其包含了LASlib和LASzip库
http://www.cs.unc.edu/~isenburg/lastools/
3. 配置与编译
1) 下载源码后,解压源码到任意目录。
2) 启动VS 2010,打开LASlib目录下的LASlib.dsw工程文件。由于原始工程在VC 6.0下创建。因此,提示需要进行版本转换。点击确认进行转换。
3) 右键点击LASlib工程,在属性对话框中选择configuration manager 按钮,新建x64的配置。同时,设置当前配置为x64。
4) 右键点击LASlib工程,在属性对话框 - C/C++ - preprocessor下增加LASZIPDLL_EXPORTS预编译宏。
5) 打开LASlib工程下的头文件mydefs.hpp,进行如下修改。
//#if defined(_MSC_VER) && (_MSC_VER < 1300)
//typedef int BOOL;
//#else
//typedef bool BOOL;
//#endif
typedef int BOOL;
6) 删除LASlib目录下的stl目录。同时,编译相应的工程文件。最终得到基于VS 2010平台的64位开发库。
4. 参考资料
http://www.cs.unc.edu/~isenburg/lastools/
https://groups.google.com/forum/#!topic/lastools/beQ4FoxT3Qk
https://groups.google.com/forum/#!topic/lastools/zDfLAcbSR7o/discussion