栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

目录

一、概述

1、LAStools-v2.0.02、下载解压 二、源码编译

2.1 打开2.2 移除加载失败的项目2.3 修改代码2.4 配置管理器2.5 修改输出目录2.6 修改头文件目录2.7 修改运行库2.8 生成lib2.9 lib路径 三、封装成库四、VS2019配库五、测试代码六、结果展示

一、概述 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++—常规—附加包含目录—删除“…laszipstl”

2.7 修改运行库

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

2.8 生成lib

右键LASlib—重新生成。出现如下界面,则debug模式的lastools编译成功。

配置release模式

右键LASlib—配置属性—C/C++—常规—附加包含目录—删除“…laszipstl”

右键LASlib—重新生成。出现如下界面,则release模式的lastools编译成功。

2.9 lib路径
...LAStoolsLAStoolsLASliblib

三、封装成库
    打开LASlib—lib新建Debug和Release文件夹,将LASlib.lib放入Release文件夹,将LASlibD.lib放入Debug文件夹。新建文件夹LasLib,将...LAStoolsLAStoolsLASlib路径下的LASlib和lib文件夹拷贝过来放入新建文件夹中。将...LAStoolsLAStoolsLASzip路径下的src文件夹拷贝过来放入新建文件夹中。库封装完毕。
四、VS2019配库

本人LASlib的路径为:

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

Release模式

D:Open3D_0.13.0LASliblibRelease

Debug模式

D:Open3D_0.13.0LASliblibDebug
    附加依赖项

Release模式

LASlib.lib

Debug模式

LASlibD.lib
五、测试代码
#include  // 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 lasreadern");
	}

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

	// ------------------------Open3D获取点云坐标------------------------------
	auto cloud = std::make_shared();
	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'.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737870.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号