1.LASTools编译
虽然网上看到很多编译LASTools的教程,而且编译成功的,但是当自己编译时却出现各种问题。尝试了多种配置方式,现在将自己的配置方法小结下,避免自己以及小伙伴们走弯路。
1.1 LASTools下载
官网下载:http://www.cs.unc.edu/~isenburg/lastools/
最好在官网上下载,其他网站下载的无法保证其是否编译成功
1.2 解压
解压到一个目录下,最好不要有中文,另外是一定要解压缩在一个目录下,要不然会出错!!
1.3 打开
使用VS2013打开lastools.dsw,其实在实际配置过程中,使用不同版本的VS打开,应该相差不大
- (1)出现复查项目和解决方案更改,直接确定
(2)XXXX.XXX 已损坏无法打开,直接确定若干次
(3)选中加载失败的工程,右键移除(DEL)
(4)修改 LASlib 的属性(右击LASlib,弹出其属性窗口),配置全部修改成 Release ,平台全部修改成 x64。(Debug类似,在这里不再详细介绍)
(5)C/C++ -> 常规 -> 附加包含目录下 删除 …laszip\stl**
****
(6)修改 LASlib -> Header Files ->mydefs.hpp 的内容,见下代码(约代码 69-73行):
修改前
#if defined(_MSC_VER) || defined (__MINGW32__)
typedef int BOOL;
#else
typedef bool BOOL;
#endif
修改后:
#if defined(_MSC_VER) // || defined (__MINGW32__)
typedef int BOOL;
#else
typedef bool BOOL;
#endif
**(7)修改属性:(这也是最重要的,区别是否能够编译成功的关键)
很多博客在编译LASTools时是没有这个步骤的,个人猜想可能这个设置对于他的工程刚好可以忽略,没有报错。但是个人在实际编译中,这个步骤必须要有,否则编译的lib文件不可用。
将安全周期检查改为否,否则会出现C4996报错
建议将运行时库改为多线程DLL
(8)编译
(1)右键 LASlib 清理
(2)右键 LASlib 生成
编译后得到的lib文件如下:
2. 环境配置
2.1环境配置如下:
属性界面中:
VC++目录 -> 包含目录:E:\soft\major\lastools\LAStools\LASlib\inc 和 E:\soft\major\lastools\LAStools\LASzip\src
VC++目录 -> 库目录:E:\soft\major\lastools\LAStools\LASlib\lib
链接器 -> 输入 -> 附加依赖项:(release)LASlib.lib (debug)LASlibD.lib
2.2 测试
#include "lasreader.hpp"
#include "laswriter.hpp"
#include<fstream>
#include<iostream>
#include<iomanip>
using namespace std;
void main()
{
LASreadOpener lasreadopener;
lasreadopener.set_file_name("G:\\点云数据\\points.las");
LASreader* lasReader = lasreadopener.open();
int majorVersion = lasReader->header.version_major;
int minorVersion = lasReader->header.version_minor;
int pointDataFormat = lasReader->header.point_data_format;
int pointAmount = lasReader->header.number_of_point_records;
double maxX = lasReader->header.max_x;
double minX = lasReader->header.min_x;
double maxY = lasReader->header.max_y;
double minY = lasReader->header.min_y;
double maxZ = lasReader->header.max_z;
double minZ = lasReader->header.min_z;
double deltaX = maxX - minX;
double deltaY = maxY - minY;
double deltaZ = maxZ - minZ;
double xOffset = lasReader->header.x_offset;
double yOffset = lasReader->header.y_offset;
double zOffset = lasReader->header.z_offset;
double xScale = lasReader->header.x_scale_factor;
double yScale = lasReader->header.y_scale_factor;
double zScale = lasReader->header.z_scale_factor;
cout << "majorVersion = " << majorVersion << endl;
cout << "minorVersion = " << minorVersion << endl;
cout << "pointDataFormat = " << pointDataFormat << endl;
cout << "number_of_point_records = " << pointAmount << endl;
}
看其运行是否成功,若成功表明编译成功。
要是懒得编译,这是我编译好的lib文件
https://download.csdn.net/download/qq_32867925/82784066
参考博客:
https://blog.csdn.net/qq_19600917/article/details/97398123