VS2017+PCL1.8.1安装配置

主要参考:win10+vs2017+PCL1.8.1配置过程及注意事项_小小旺仔呀的博客-CSDN博客_vs2017配置pcl

16-PCL教程-基础应用-在win10下安装PCL_哔哩哔哩_bilibili

以上两篇参考非常详细,尤其是B站的这位up主对于每个步骤都解释了为什么这么做,对小白非常友好。本篇只是个人初期具体安装配置的过程记录。

一、前期准备

Visual Studio2017是一直都要用的,很早就安装好了。安装步骤简单,教程随处可见。

下载PCL1.8.1安装包:Point Cloud Library 1.8.1 has been released – Summary?Blog。根据自己vs版本和操作系统位数选择对应的文件(两个)下载到本地。

 二、安装PCL

对PCL-1..8.1-AllInOne,以管理员身份运行。

这里选择中间选项,会自动把PCL添加到系统路径里面

 

 

 

 弹出一个安装OpenNI2的窗口,很多教程建议把路径改到pcl安装目录的3rdparty\openNI2目录下

 

 

安装完成。解压最开始和安装包一起下载的zip文件,全选里面的文件,复制到pcl安装目录下面的bin文件夹,粘进去,我这里是D:\03-PCL\PCL 1.8.1\bin。

三、配置系统环境变量

直接在搜索框输入‘系统变量’,打开系统属性对话框。

 找到自己的PCL安装目录,有bin文件的都复制一下路径添加到这里面来,总共是这6项。(PCL1.8.1安装的时候勾选了就会自动添加的,无需手动添加)添加完成后,这部分就完成了。重启一下电脑。

 四、在VS中配置

打开VS,新建一个空项目。

新建后默认是x86的环境,我根据自己习惯设置为debug | x64。(后面的环境设置务必与此处保持一致)

 对项目右键单击,选择【属性】,弹出对话框如下。(打开属性页之前先添加一个cpp文件,否则打开的属性页不会有C/C++这项)

 在VC++目录的包含目录库目录里分别添加以下对应项:

!!在包含目录和库目录里面添加路径要一条一条分开添加,不要黏在一起,也不需要分隔符号,否则会报错 ‘无法打开源文件’

包含目录(7个):

D:\03-PCL\PCL 1.8.1\3rdParty\OpenNI2\Include

D:\03-PCL\PCL 1.8.1\include\pcl-1.8

D:\03-PCL\PCL 1.8.1\3rdParty\VTK\include\vtk-8.0

D:\03-PCL\PCL 1.8.1\3rdParty\Qhull\include

D:\03-PCL\PCL 1.8.1\3rdParty\FLANN\include

D:\03-PCL\PCL 1.8.1\3rdParty\Eigen\eigen3

D:\03-PCL\PCL 1.8.1\3rdParty\Boost\include\boost-1_64

(这是按照我的PCL安装目录来的路径。其实只要找到以上路径末端文件的所在位置,将绝对路径粘贴复制即可。添加包含目录是为了能让程序找到PCL提供的各项头文件。)

库目录(6个):

D:\03-PCL\PCL 1.8.1\3rdParty\OpenNI2\Lib

D:\03-PCL\PCL 1.8.1\3rdParty\VTK\lib

D:\03-PCL\PCL 1.8.1\3rdParty\Qhull\lib

D:\03-PCL\PCL 1.8.1\3rdParty\FLANN\lib

D:\03-PCL\PCL 1.8.1\3rdParty\Boost\lib

D:\03-PCL\PCL 1.8.1\lib;

(找到以上路径末端文件的所在位置,将绝对路径粘贴复制即可。添加库目录是为了能让程序找到PCL提供的依赖库。)

添加附加依赖项。因为我环境设置的是debug,找的是debug版本附加依赖项,如下:

vtknetcdf_c++-gd.lib;pcl_common_debug.lib;pcl_features_debug.lib;pcl_filters_debug.lib;pcl_io_ply_debug.lib;pcl_io_debug.lib;pcl_kdtree_debug.lib;pcl_keypoints_debug.lib;pcl_ml_debug.lib;pcl_octree_debug.lib;pcl_outofcore_debug.lib;pcl_people_debug.lib;pcl_recognition_debug.lib;pcl_registration_debug.lib;pcl_sample_consensus_debug.lib;pcl_search_debug.lib;pcl_segmentation_debug.lib;pcl_stereo_debug.lib;pcl_surface_debug.lib;pcl_tracking_debug.lib;pcl_visualization_debug.lib;libboost_atomic-vc141-mt-gd-1_64.lib;libboost_bzip2-vc141-mt-gd-1_64.lib;libboost_chrono-vc141-mt-gd-1_64.lib;libboost_container-vc141-mt-gd-1_64.lib;libboost_context-vc141-mt-gd-1_64.lib;libboost_coroutine-vc141-mt-gd-1_64.lib;libboost_date_time-vc141-mt-gd-1_64.lib;libboost_exception-vc141-mt-gd-1_64.lib;libboost_fiber-vc141-mt-gd-1_64.lib;libboost_filesystem-vc141-mt-gd-1_64.lib;libboost_graph-vc141-mt-gd-1_64.lib;libboost_graph_parallel-vc141-mt-gd-1_64.lib;libboost_iostreams-vc141-mt-gd-1_64.lib;libboost_locale-vc141-mt-gd-1_64.lib;libboost_log-vc141-mt-gd-1_64.lib;libboost_log_setup-vc141-mt-gd-1_64.lib;libboost_math_c99-vc141-mt-gd-1_64.lib;libboost_math_c99f-vc141-mt-gd-1_64.lib;libboost_math_c99l-vc141-mt-gd-1_64.lib;libboost_math_tr1-vc141-mt-gd-1_64.lib;libboost_math_tr1f-vc141-mt-gd-1_64.lib;libboost_math_tr1l-vc141-mt-gd-1_64.lib;libboost_mpi-vc141-mt-gd-1_64.lib;libboost_numpy3-vc141-mt-gd-1_64.lib;libboost_numpy-vc141-mt-gd-1_64.lib;libboost_prg_exec_monitor-vc141-mt-gd-1_64.lib;libboost_program_options-vc141-mt-gd-1_64.lib;libboost_python3-vc141-mt-gd-1_64.lib;libboost_python-vc141-mt-gd-1_64.lib;libboost_random-vc141-mt-gd-1_64.lib;libboost_regex-vc141-mt-gd-1_64.lib;libboost_serialization-vc141-mt-gd-1_64.lib;libboost_signals-vc141-mt-gd-1_64.lib;libboost_system-vc141-mt-gd-1_64.lib;libboost_test_exec_monitor-vc141-mt-gd-1_64.lib;libboost_thread-vc141-mt-gd-1_64.lib;libboost_timer-vc141-mt-gd-1_64.lib;libboost_type_erasure-vc141-mt-gd-1_64.lib;libboost_unit_test_framework-vc141-mt-gd-1_64.lib;libboost_wave-vc141-mt-gd-1_64.lib;libboost_wserialization-vc141-mt-gd-1_64.lib;libboost_zlib-vc141-mt-gd-1_64.lib;flann-gd.lib;flann_cpp-gd.lib;flann_cpp_s-gd.lib;flann_sgd.lib;qhull_d.lib;qhullcpp_d.lib;qhullstatic_d.lib;qhullstatic_r_d.lib;qhull_p_d.lib;qhull_r_d.lib;vtkalglib-8.0-gd.lib;vtkChartsCore-8.0-gd.lib;vtkCommonColor-8.0-gd.lib;vtkCommonComputationalGeometry-8.0-gd.lib;vtkCommonCore-8.0-gd.lib;vtkCommonDataModel-8.0-gd.lib;vtkCommonExecutionModel-8.0-gd.lib;vtkCommonMath-8.0-gd.lib;vtkCommonMisc-8.0-gd.lib;vtkCommonSystem-8.0-gd.lib;vtkCommonTransforms-8.0-gd.lib;vtkDICOMParser-8.0-gd.lib;vtkDomainsChemistry-8.0-gd.lib;vtkexoIIc-8.0-gd.lib;vtkexpat-8.0-gd.lib;vtkFiltersAMR-8.0-gd.lib;vtkFiltersCore-8.0-gd.lib;vtkFiltersExtraction-8.0-gd.lib;vtkFiltersFlowPaths-8.0-gd.lib;vtkFiltersGeneral-8.0-gd.lib;vtkFiltersGeneric-8.0-gd.lib;vtkFiltersGeometry-8.0-gd.lib;vtkFiltersHybrid-8.0-gd.lib;vtkFiltersHyperTree-8.0-gd.lib;vtkFiltersImaging-8.0-gd.lib;vtkFiltersModeling-8.0-gd.lib;vtkFiltersParallel-8.0-gd.lib;vtkFiltersParallelImaging-8.0-gd.lib;vtkFiltersPoints-8.0-gd.lib;vtkFiltersProgrammable-8.0-gd.lib;vtkFiltersSelection-8.0-gd.lib;vtkFiltersSMP-8.0-gd.lib;vtkFiltersSources-8.0-gd.lib;vtkFiltersStatistics-8.0-gd.lib;vtkFiltersTexture-8.0-gd.lib;vtkFiltersTopology-8.0-gd.lib;vtkFiltersVerdict-8.0-gd.lib;vtkfreetype-8.0-gd.lib;vtkGeovisCore-8.0-gd.lib;vtkgl2ps-8.0-gd.lib;vtkhdf5-8.0-gd.lib;vtkhdf5_hl-8.0-gd.lib;vtkImagingColor-8.0-gd.lib;vtkImagingCore-8.0-gd.lib;vtkImagingFourier-8.0-gd.lib;vtkImagingGeneral-8.0-gd.lib;vtkImagingHybrid-8.0-gd.lib;vtkImagingMath-8.0-gd.lib;vtkImagingMorphological-8.0-gd.lib;vtkImagingSources-8.0-gd.lib;vtkImagingStatistics-8.0-gd.lib;vtkImagingStencil-8.0-gd.lib;vtkInfovisCore-8.0-gd.lib;vtkInfovisLayout-8.0-gd.lib;vtkInteractionImage-8.0-gd.lib;vtkInteractionStyle-8.0-gd.lib;vtkInteractionWidgets-8.0-gd.lib;vtkIOAMR-8.0-gd.lib;vtkIOCore-8.0-gd.lib;vtkIOEnSight-8.0-gd.lib;vtkIOExodus-8.0-gd.lib;vtkIOExport-8.0-gd.lib;vtkIOExportOpenGL-8.0-gd.lib;vtkIOGeometry-8.0-gd.lib;vtkIOImage-8.0-gd.lib;vtkIOImport-8.0-gd.lib;vtkIOInfovis-8.0-gd.lib;vtkIOLegacy-8.0-gd.lib;vtkIOLSDyna-8.0-gd.lib;vtkIOMINC-8.0-gd.lib;vtkIOMovie-8.0-gd.lib;vtkIONetCDF-8.0-gd.lib;vtkIOParallel-8.0-gd.lib;vtkIOParallelXML-8.0-gd.lib;vtkIOPLY-8.0-gd.lib;vtkIOSQL-8.0-gd.lib;vtkIOTecplotTable-8.0-gd.lib;vtkIOVideo-8.0-gd.lib;vtkIOXML-8.0-gd.lib;vtkIOXMLParser-8.0-gd.lib;vtkjpeg-8.0-gd.lib;vtkjsoncpp-8.0-gd.lib;vtklibharu-8.0-gd.lib;vtklibxml2-8.0-gd.lib;vtklz4-8.0-gd.lib;vtkmetaio-8.0-gd.lib;vtkNetCDF-8.0-gd.lib;vtkoggtheora-8.0-gd.lib;vtkParallelCore-8.0-gd.lib;vtkpng-8.0-gd.lib;vtkproj4-8.0-gd.lib;vtkRenderingAnnotation-8.0-gd.lib;vtkRenderingContext2D-8.0-gd.lib;vtkRenderingContextOpenGL-8.0-gd.lib;vtkRenderingCore-8.0-gd.lib;vtkRenderingFreeType-8.0-gd.lib;vtkRenderingGL2PS-8.0-gd.lib;vtkRenderingImage-8.0-gd.lib;vtkRenderingLabel-8.0-gd.lib;vtkRenderingLIC-8.0-gd.lib;vtkRenderingLOD-8.0-gd.lib;vtkRenderingOpenGL-8.0-gd.lib;vtkRenderingVolume-8.0-gd.lib;vtkRenderingVolumeOpenGL-8.0-gd.lib;vtksqlite-8.0-gd.lib;vtksys-8.0-gd.lib;vtktiff-8.0-gd.lib;vtkverdict-8.0-gd.lib;vtkViewsContext2D-8.0-gd.lib;vtkViewsCore-8.0-gd.lib;vtkViewsInfovis-8.0-gd.lib;vtkzlib-8.0-gd.lib;opengl32.lib

附加依赖项不用一个个粘进去,可以堆在一起添加进去。如果环境设置为release,在网上也能搜得到。到这里配置就完成了。

五、问题

①一个非常常见的问题,错误C4996。这是在找解决方案的时候看到的回答,可以解决问题。

直接把这三句话全部粘进预处理器定义里面。

_CRT_SECURE_NO_WARNINGS

_SCL_SECURE_NO_WARNINGS

_SILENCE_FPOS_SEEKPOS_DEPRECATION_WARNING 

②另一个很常见的问题。(不管遇没遇到,我习惯性配置的时候直接改了,反正很快)

解决方案是:默认是【是】,这里改成【否】

③ (补充)后来运行其他案例的时候,遇到的报错。

 解决方案:在主程序代码的最上面加上这句 #define BOOST_TYPEOF_EMULATION

参考:点云编译错误及解决_JmHm的博客-CSDN博客

④(补充)运行其他案例时遇到的报错,忘记截图,错误提示为:“pop_t:找不到标识符”。

 参见:C3861 “pop_t”:找不到标识符,解决办法_Leo-Ma的博客-CSDN博客_pop_t 找不到标识符

⑤(补充)因为需要,时隔很久之后重新配了一个新项目,结果报错(心脏骤停)。错误为:

无法打开pcl_common_debug.lib;找不到pcl_common_debug.lib(忘记截图了)

 找了一下,这个博主的方法有效,把提示找不到的lib文件,复制一份到当前项目所在文件夹。

由于找不动pcl_common_debug.dll,无法继续执行代码_钢铁男儿的博客-CSDN博客

一开始只粘了提示找不到的lib文件进去,结果又报找不到另一个lib文件的错误。所以干脆直接把所有的lib粘进去了。向下面这样: 

这个文件夹下面的所有lib,我没管是release的还是debug的,一股脑全都复制了。

 复制进我新建的项目所在的文件夹里面,可以正常运行。

⑥(补充)最近再配置又冒出一个错误(没截图)

错误主要内容是:找不到flann_sgd.lib。

 我的附加依赖项一致都是粘贴复制的上面那一大段,以前没报错过,所有出现这种错误还真的意外。就去pcl安装目录下找了一下这个文件,发现有是有,就是名字有点点不一样:

 解决方案就是把附加依赖项里那个flann_sgd.lib,改成flann_s-gd.lib,就可以正常运行了。

 六、测试案例

测试案例的代码是在网上随便搜的。

#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <vtkAutoInit.h>

VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkRenderingOpenGL);

int user_data;
void viewerOneoff(pcl::visualization::PCLVisualizer& viewer) {
    viewer.setBackgroundColor(1.0, 0.5, 1.0);
    pcl::PointXYZ o;
    o.x = 1.0;
    o.y = 0;
    o.z = 0;
    viewer.addSphere(o, 0.25, "sphere", 0);
    std::cout << "i only run once" << std::endl;
}
void viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
{
    static unsigned count = 0;
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
    viewer.removeShape("text", 0);
    viewer.addText(ss.str(), 200, 300, "text", 0);
    user_data++;
}
int main()
{
    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
    pcl::io::loadPCDFile("rabbit.pcd", *cloud);//注意替换自己的pcd点云数据
    pcl::visualization::CloudViewer viewer("Cloud Viewer");
    viewer.showCloud(cloud);
    viewer.runOnVisualizationThreadOnce(viewerOneoff);
    viewer.runOnVisualizationThread(viewerPsycho);
    while (!viewer.wasStopped())
    {
        user_data++;
    }
    return 0;
}

测试结果:

 本文的配置为一次性配置,即每一次新建空项目时都需要重复步骤四。

  • 3
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: vtk8.0.0编译好的库是一个用于可视化和图像处理的开源软件库。这个库是基于C++语言开发的,可以在各种操作系统和各种编译器上使用。在这种情况下,我们假设您是在Windows操作系统上使用Qt 5.9、Visual Studio 2015和PCL 1.8.1来编译和使用vtk8.0.0库。 首先,您需要确保您安装了Qt 5.9,这是一个跨平台的应用程序和UI开发框架。您可以从Qt的官方网站上下载并安装最新版本的Qt 5.9。 接下来,您需要安装Visual Studio 2015,这是一个强大的集成开发环境(IDE),用于编写和调试C++代码。您可以从微软官方网站上下载并安装Visual Studio 2015。 然后,您需要安装PCL 1.8.1,这是一个用于点云处理的开源库。您可以从PCL的官方网站上下载并安装最新版本的PCL 1.8.1。 最后,您需要将vtk8.0.0库与Qt 5.9、Visual Studio 2015和PCL 1.8.1集成在一起。首先,在Visual Studio 2015的项目设置中添加vtk8.0.0的头文件路径和库文件路径。然后,在您的项目代码中包含vtk的头文件,并链接vtk的库文件。 在编译和构建您的项目时,您需要确保选择正确的编译配置,以便使用Qt 5.9、Visual Studio 2015和PCL 1.8.1进行构建。 以上是使用vtk8.0.0库的一般步骤。根据您的具体项目需求,您可能需要进一步的配置和调整。希望这些信息对您有所帮助! ### 回答2: vtk8.0.0编译好的库适用于Qt5.9,VS2015,PCL1.8.1和VTK8.0版本。 首先,vtk8.0.0编译好的库是指已经经过编译,并可用于开发的库文件。该库文件中包含了VTK(Visualization Toolkit,可视化工具包)的功能和特性,可以用于构建和展示3D图像、可视化数据等。 Qt5.9是一个跨平台应用程序开发框架,可以用于创建图形界面和进行应用程序开发。vtk8.0.0编译好的库与Qt5.9兼容,因此可以在Qt应用程序中使用该库实现丰富的3D可视化功能。 VS2015是一个开发环境,适用于Windows操作系统。vtk8.0.0编译好的库是基于VS2015编译的,所以可以在该环境下使用该库进行开发。 PCL1.8.1是点云库(Point Cloud Library)的一个版本。vtk8.0.0编译好的库与PCL1.8.1兼容,可以使用该库来处理和可视化点云数据。 综上所述,vtk8.0.0编译好的库适用于Qt5.9,VS2015,PCL1.8.1和VTK8.0版本,可以在这些环境中使用vtk编译好的库开发和展示3D可视化功能。 ### 回答3: vtk8.0.0 编译好的库是基于以下工具和版本编译的:qt5.9、vs2015、pcl1.8.1以及vtk8.0。 vtk8.0.0是Visualization Toolkit的一个版本,它是一个开源的跨平台的3D图像处理和可视化库。它提供了丰富的功能和工具,用于处理和分析3D数据,并通过高质量的图形输出显示结果。 编译库使用的Qt版本为5.9。Qt是一个跨平台的应用程序开发框架,它提供了一套易于使用的工具和类库,用于开发图形用户界面应用程序。Qt 5.9的使用可以为vtk8.0.0库提供更强的功能和更好的用户体验。 在编译过程中,使用了VS2015作为集成开发环境(IDE)。VS2015是由微软开发的一个功能强大的集成开发环境,用于开发Windows平台上的应用程序。它提供了丰富的开发工具和调试功能,可以方便地进行代码编写和调试。 此外,编译还使用了pcl1.8.1PCL(Point Cloud Library)是一个开源的用于点云处理的库,它提供了一系列的算法和工具,用于处理和分析点云数据。PCL 1.8.1提供了vtk8.0.0库所需的点云处理功能和支持。 综上所述,vtk8.0.0编译好的库是基于qt5.9、vs2015、pcl1.8.1和vtk8.0的。使用这些工具和库,可以轻松地进行3D图像处理和可视化开发,并获得高质量的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值