欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2023-06-05
目录

一、概述

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.0LASlibincludeD: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'.

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。