Win10系统下VisualStudio2019编译配置LAStools-v2.0.0

一、概述

1、LAStools-v2.0.0

  由于某种历史原因,LAStools库又开始更新了。最近一次更新时间为:2022年1月7日。LASTools版本为:220107。由于一些请求,现在开始使用git发布功能。LASTools在YYMMDD方案中使用版本控制。这对于大多数LASTools用户来说是很常见的,因此也保留这个版本号。此外,我们将遵循开源版本的git版本控制指南。它们也可能随后流入源代码。因为我们有一段很像历史的东西,我们直接从2.0.0版开始。

2、下载解压

github链接:https://github.com/LAStools/LAStools/releases/tag/v2.0.0

下载红框中的内容并解压
在这里插入图片描述

二、源码编译

2.1 打开

使用VS2019打开lastools.dsw
在这里插入图片描述
正在迁移解决方案和项目
在这里插入图片描述
出现如下界面时,一直点确定即可。
在这里插入图片描述

2.2 移除加载失败的项目

在这里插入图片描述

2.3 修改代码

打开LASlib的头文件mydefs.hpp,定位到69行,只保留 #if defined(_MSC_VER),删除或注释该行其它代码。
在这里插入图片描述

2.4 配置管理器

配置过程如下图所示:
在这里插入图片描述
在这里插入图片描述

2.5 修改输出目录

右键LASlib—属性—配置属性—常规—输出目录—修改为:

$(SolutionDir)$(ProjectName)\$(Configuration)\

2.6 修改头文件目录

右键LASlib—配置属性—C/C++—常规—附加包含目录—删除“…\laszip\stl”
在这里插入图片描述

2.7 修改运行库

右键LASlib—属性—C/C++—代码生成—运行库—选择“多线程(/MD)”。(VS2019默认是多线程/MTd,此前,open3d编译时选择的是多线程(/MD),故此处也选择多线程(/MD))
在这里插入图片描述

2.8 生成lib

右键LASlib—重新生成。出现如下界面,则debug模式的lastools编译成功。
在这里插入图片描述
配置release模式
在这里插入图片描述
右键LASlib—配置属性—C/C++—常规—附加包含目录—删除“…\laszip\stl”
在这里插入图片描述

右键LASlib—重新生成。出现如下界面,则release模式的lastools编译成功。
在这里插入图片描述

2.9 lib路径

...\LAStools\LAStools\LASlib\lib

在这里插入图片描述

三、封装成库

  1. 打开LASlib—lib新建Debug和Release文件夹,将LASlib.lib放入Release文件夹,将LASlibD.lib放入Debug文件夹。
  2. 新建文件夹LasLib,将...\LAStools\LAStools\LASlib路径下的LASlib和lib文件夹拷贝过来放入新建文件夹中。
  3. ...\LAStools\LAStools\LASzip路径下的src文件夹拷贝过来放入新建文件夹中。库封装完毕。

四、VS2019配库

本人LASlib的路径为:

D:\Open3D_0.13.0\LASlib
  1. 配置属性—C/C++—代码生成—运行库,多线程(/MT),与步骤2.7的设置保持一致。
  2. VC++目录—包含目录
D:\Open3D_0.13.0\LASlib\include
D:\Open3D_0.13.0\LASlib\src
  1. VC++目录—库目录

Release模式

D:\Open3D_0.13.0\LASlib\lib\Release

Debug模式

D:\Open3D_0.13.0\LASlib\lib\Debug
  1. 附加依赖项

Release模式

LASlib.lib

Debug模式

LASlibD.lib

五、测试代码

#include <iostream> // C++
#include "lasreader.hpp"// LasReader
#include "open3d/geometry/PointCloud.h"// Open3D 点云头文件
#include "open3d/visualization/utility/DrawGeometry.h" // Open3D 可视化头文件

using namespace std;

int main(int argc, char* argv[])
{
    
    
	// ---------------------LASLib从las文件中读取点云---------------------------
	LASreadOpener lasreadopener;
	LASreader* lasReader = lasreadopener.open("R.las");

	if (lasReader == 0)
	{
    
    
		fprintf(stderr, "ERROR: could not open lasreader\n");
	}

	printf("reading %I64d points from '%s'.\n", lasReader->npoints, lasreadopener.get_file_name());

	// ------------------------Open3D获取点云坐标------------------------------
	auto cloud = std::make_shared<open3d::geometry::PointCloud>();
	int pointAmount = lasReader->npoints; // las中点的个数
	cloud->points_.resize(pointAmount);
	
	int i = 0;
	while (lasReader->read_point() && i < pointAmount)
	{
    
    
		cloud->points_[i][0] = lasReader->point.get_X();      // 获取点云X坐标
		cloud->points_[i][1] = lasReader->point.get_Y();      // 获取点云Y坐标
		cloud->points_[i][2] = lasReader->point.get_Z();      // 获取点云Z坐标

		++i;
	}

	lasReader->close();
	delete lasReader;
	lasReader = nullptr;
	// ------------------------Open3D显示点云坐标------------------------------
	open3d::visualization::DrawGeometries({
    
     cloud }, "PointCloud", 800, 600);

	return 0;
}

六、结果展示

reading 595018 points from 'R.las'.

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36686437/article/details/122909887