自学内容网 自学内容网

VS2019+Qt5.14.2+pcl-1.11.1+VTK-8.2.0环境配置

一、简介

image

(一)、目标

​ 本教程是设定在一个从未配置过VS2019+qt5+PCL+VTK的windows环境中,从零开始配置点云开发环境,此环境配置比较烦锁,且很容易出错,笔者几年前试过在两个不一样的windows环境中,按同样的配置方法,一台电脑配置成功,另一台配置失败。失败的那台电脑配置稍差。此次因为要做点云相关项目,所以要重新搭建一下开发环境。回想以前的配置流程,只能记个大概了,其中一些配置细节也忘了。所以笔者以这次项目机会重新梳理一下配置流程。期间也参考了网上博文,一步一步配置并记录,因此有了此教程。

​ 此教程比较详细,有必要的说明,并配上了截图和提示,对初次配置点云开发环境的人来说比较友好。另外本文会附上所有安装软件,一次性下载,减少不必要的软件下载时间。各软件的版本需要适配,避免安装到后面出现各种问题,既浪费时间,又打击信心,本文介绍的各软件版本是经过验证的,可靠性不存在问题,可以放心使用。

​ 另外,本文前8章是开发环境的搭建,如果说开发环境已搭建好的情况下,现在需要重新用vs2019创建一个软件项目,可以直接跳到第9章的环境配置。第8章Cmake+vs2019编译的VTK库,笔者也一并附上,方便使用者直接使用。

​ 这里附上下载链接,需要的可自行下载,如果后期链接失效可以添加本人QQ:2284108152 (备注:“pcl开发软件”)联系我。本人后续也会做一些点云相关开发项目,有兴趣也可加我一起交流学习。

  • 软件下载地址

    • 百度:

    通过网盘分享的文件:pcl软件开发环境搭建
    链接: https://pan.baidu.com/s/1wJOzdHzzYpeVHNouWEZB7A 提取码: 1234

(二)、资料介绍

  1. 软件列表

    名称版本对应文件作用
    Visual Studio2019 Communityvs_community__905539961.1614150471.exe开发,管理,组织,编译软件项目
    Qt5.14.2qt-opensource-windows-x86-5.14.2.exe提供UI界面开发的库
    VS下qt插件2.4.0qt-vsaddin-msvc2019-2.4.0.vsix集成vs和qt的构建系统(连接作用)
    PCLPCL-1.11.1PCL-1.11.1-AllInOne-msvc2019-win64.exe提供点云数据处理的相关库
    CMake3.24.0cmake-3.24.0-rc1-windows-x86_64.msi预处理vtk源文件,供VS2019编译。
    VTK库源码8.2.0VTK-8.2.0.zip提供可视化显示点云数据的相关库
    VTK库源码编译后的库文件8.2.0VTK-prefixVTK-8.2.0.zip编译后的库文件,供用户调用。
  2. 软件介绍(个别介绍)

  • PCL-1.11.1 (PCL: Point Cloud Library)
    • 定义:
      PCL 是一个独立的、大规模的、开放的点云处理库,它涵盖了点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建等诸多点云处理环节。
    • 功能:

    点云获取:支持多种点云数据获取方式,例如从激光雷达(LiDAR)等设备获取原始点云数据。以 Velodyne 激光雷达为例,PCL 可以帮助读取其输出的点云数据格式,为后续处理做准备。
    滤波处理:能够去除点云中的噪声点。比如统计滤波,它可以根据点云中点的分布统计特性,去除离群点。假设在一个室内场景的点云数据中,由于测量误差等原因出现了一些距离大部分点云较远的点,通过统计滤波可以将这些噪声点剔除,使点云数据更加纯净。
    分割功能:可将点云按照不同的几何形状或者物体类别进行分割。例如在一个包含多个物体(如桌子、椅子、墙壁)的室内点云场景中,通过区域生长分割算法,PCL 可以根据点的几何特征(如曲率等)将属于不同物体的点云分割开来,方便后续对每个物体进行单独的分析和处理。
    配准操作:用于将不同视角或者不同时间获取的点云数据进行对齐。例如在三维重建场景中,从不同角度扫描一个物体得到的多组点云,PCL 的配准算法(如 ICP - Iterative Closest Point 算法)可以找到这些点云之间的最佳变换关系,将它们拼接成一个完整的物体点云模型。
    特征提取:可以提取点云的各种特征,像法线特征、FPFH(Fast Point Feature Histograms)特征等。这些特征对于点云的分类、识别等后续操作非常重要。例如在一个点云分类任务中,提取的法线特征可以帮助区分平面和曲面,进而区分不同的物体类别。

  • VTK-8.2.0.zip (VTK:Visualization Toolkit)
    • 定义:VTK 是一个用于可视化和图形处理的跨平台开源软件系统。版本 8.2.0 是 VTK 的一个特定版本,它在可视化方面提供了强大的功能。
    • 功能:

    数据可视化:能够将点云等多种数据类型以直观的图形方式展示出来。例如,它可以把点云数据渲染成三维空间中的点的集合,用户可以通过调整视角、颜色等参数来更好地观察点云的分布情况。同时,VTK 也支持将点云数据和其他几何数据(如网格模型)一起进行可视化展示。
    图形处理能力:可以进行图形的变换、裁剪等操作。比如在可视化点云时,如果只想观察点云的某一部分,可以使用 VTK 的裁剪功能将不需要的部分去除。而且它可以对图形进行缩放、旋转和平移等操作,方便用户从不同角度查看数据。
    支持多种数据格式:VTK 8.2.0 能够读取和处理多种数据格式,包括但不限于常见的点云数据格式和医学影像数据格式等。这使得它可以广泛应用于不同领域的数据可视化任务,如计算机辅助设计(CAD)、医学成像、地理信息系统(GIS)等领域,并且可以和其他软件系统进行数据交互。

  • 总结:点云可视化化开发中,pcl提供的库负责对数据的处理,vtk提供的库用于将pcl处理后的数据进行可视化显示;

(三)、环境配置总结

此部分介绍是开发环境配置完成后的总结,后面配置需要做的事比较多,配置完成后这里总结一下我们到底做了啥,不然都不知道做这些工作的意义在哪里,后面时间久了要重新配置开发环境都不在到要如何下手,只有知道干了什么,才能理解得更深刻;

  1. 为什么pcl开发要用vs+qt环境为什么不能直接使用qt开发呢?

PCL 官方对 Visual Studio 提供了很好的支持,Visual Studio 具有完善的项目管理功能,能够方便地组织和管理 PCL 项目的文件和资源。可以轻松地添加、删除文件,设置项目属性,如编译选项、链接库等,对于大型 PCL 项目的开发和维护非常便利。虽然 Qt 也有自己的构建系统 qmake,但在处理复杂的 PCL 项目依赖关系时,可能会显得力不从心。相比之下,CMake 在处理 PCL 项目的依赖和跨平台构建方面更加灵活和强大,而 Visual Studio 对 CMake 的支持较好。

  1. 安装qt软件的作用?

前面说了用Visual Studio 软件的必要性,visual studio开发界面软件需要依赖其他组件的UI类库,比如mfc,qt或Windows Forms 。相比之下,qt具有跨平台性,界面设计功能丰富。vs+qt插件要开发界面程序,前提是qt本体得安装,因为程序运行需要依赖qt本体软件的库。另外一个最重要的原因是VTK官网提供的vtk源码(比如:vtk8.2.0)通过cmake+vs编译后,会输出一个定制的qt控件QVTKWidget(在第9章中第3、4节会介绍)。说明官方支持使用vs+qt这种组合来开发点云可视化的。

  1. CMake工具的作用?

CMake 是一个跨平台的构建工具,它可以根据不同的操作系统和编译器生成相应的项目构建文件。在构建 VTK 8.2.0 时,CMake 会读取 VTK 源代码目录下的 CMakeLists.txt 文件,这个文件包含了 VTK 项目的各种配置信息,如源文件列表、头文件路径、库文件依赖、编译选项等。基于这些信息,CMake 能够为 Visual Studio 生成工程文件,使得 VTK 可以在 Windows 平台上使用 VS 进行编译和构建。
总结:CMake工具这里的作用就是将VTK8.2.0源码进行预处理,生成可用vs打开运行的源码工程(对应后面配置教程的:VTK-install),然后通过vs进一步将源码工程编译成供外部程序调用的库(对应:VTK-prefix文件夹)。

(四)、参考链接


二、安装vs2019

(一)、安装教程

  1. 解压缩VS2015_ENT_CHS.zip,进入文件夹中,以管理员身份运行vs_enterprise.exe
    image

  2. 修改安装路径,然后选择c++桌面开发
    image

  3. 选中如下单个组件,然后开始安装
    image

  4. 安装中
    image

  5. 安装完成
    image


三、安装qt5.14.2

(一)、安装教程

  1. 安装前暂时关闭网络

  2. 右键,管理员身份安装
    image

  3. 设置安装路径
    image

  4. 按如下进行选择相关组件,然后一路安装完成
    image

  5. 安装完成
    image

(二)、添加qt环境变量

  1. 如图点击“环境变量”
    image

  2. 按如下图顺序添加qt环境变量,然后确定保存;
    image


四、安装Qt VS插件

(一)、安装教程

  1. 安装VS Qt插件前,关闭VS和Qt
  2. 双击qt-vsaddin-msvc2019-2.4.0.vsix开始安装
    image
  3. 自动识别vs2019,执行安装
    image
  4. 安装完成后关闭

五、vs2019安装qt插件

  1. 打开VS2019,随便创建一个c++项目然后打开

  2. 参考如下图,点击扩展菜单,打开“Qt Options”
    image

  3. 选中Qt路径,然后点击确定
    image

  4. 配置成功后,点击OK关闭消息框
    image

  5. Qt路径设置后,再新建Qt程序,如下图,可以选择GUI程序
    image

  6. 创建后运行测试成功
    image

  7. vs创建qt项目提示:“E1696 无法打开Qt源文件”的解决方案

参考链接:使用Visual Studio编译Qt项目出现“E1696 无法打开Qt源文件”的解决方案


六、安装PCL1.11.1

(一)、安装教程

  1. 双击“PCL-1.11.1-AllInOne-msvc2019-win64.exe”开始安装
    image

  2. 点击“我接受”
    image

  3. 按如下图操作
    image

  4. 设置安装路径,注意去掉PCL和1.11.1之间的空格(切记)
    image

  5. 一路安装到完成(此步骤安装时会默认安装OpenNI-Windows-x64-2.2.msi,安装路径是默认指定的,为了方便管理,我们在第6步卸了重装,重新指定安装路径)
    image

  6. PCL的OPENNI2卸载了重新安装一下,进入PCL 1.11.1\3rdParty\OpenNI2,如图双击“OpenNI-Windows-x64-2.2.msi”执行卸载
    image

  7. 执行remove卸载
    image

  8. 卸载后,再次点击“OpenNI-Windows-x64-2.2.msi”重新安装,安装路径设定到PCL1.11.1\3rdParty\OpenNI2
    image

  9. 安装完成后如下图,新增文件
    image

(二)、添加PCL的环境变量

  1. 确认OPENNI2相关环境变量是否自动成功添加
    image

  2. 参考如下图,添加PCL其它部分环境变量
    image


七、安装Cmake

(一)、安装教程

  1. 双击“cmake-3.24.0-rc1-windows-x86_64.msi”执行安装。(cmake的版本最好要和VTK版本匹配,不然可能后边会出错)
    image

  2. 按下图,添加cmake环境变量
    image

  3. 修改安装路径,然后一路安装到完成。
    image

  4. 查看安装完成情况,搜索框输入:cmake,如下情况,安装成功。
    image


八、Cmake+Vs2019编译vtk库

(一)、准备工作

  1. 将VTK-8.2.0.zip复制到非中文路径,并解压
    image

  2. 在同一目录下新建VTK-install和VTK-prefix目录(VTK-install用于存放CMake预处理后的工程)。
    image

(二)、CMake配置

  1. 以管理员的身份运行Cmake,文件源为vtk-8.2.0,输出到我们新建的vtk-install里面,按下图设置
    image

  2. 载弹出的对话框中按如下设置
    image

  3. 生成完成之后勾选一些需要编译的东西。BUILD里面把BUILD_EXAMPLES打✔,最好不要✔BUILD_TESTING,虽然据说把这个打上勾不会出现可能出现的编译路径错误,但是会大大增加vs编译的时间
    image

  4. CMAKE里面在CMAKE_INSTALL_PREFIX的路径,选择为我们之前新建的VTK-prefix文件
    image

  5. Module里面勾选vtkGUISupportQt即可
    image

  6. VTK里面勾选VTK_Group_QT即可
    image

  7. 点击configure再次进行编译

  8. 注意这里的地址一定要同你QT中msvc2017-64/lib/cmake的地址一样,如果你环境变量没问题,这里就不会有问题。
    image

  9. 再次点击configure,如果全是白色的,就点击Genrate,等待一会儿。
    image

  10. 生成完成后,点击open project。或者点击vtk-install里面的VTK-sln,此时选择VS2019打开。
    image

(三)、VS2019编译VTK

  1. 打开VS2019后,将顶部设置为Release和X64。
    image

  2. 点击左侧ALL BUILD,先点击设为启动项目,再点击生成即可。
    image

  3. 编译完成如下图,如果编译报错参考:https://blog.csdn.net/wangsen8/article/details/114694211
    image

  4. 编译完成后,点击执行INSTALL,在vtk-prefix目录下会生成对应文件。
    image

image

  1. 以上编译工作完成,会在VTK-prefix目录下生成用户使用的库文件(lib文件夹中)。

九、环境设置

此部分是在VS编译完成后生成了目标VTK相关库(VTK-prefix)的基础上的配置方法介绍。如果在已有编译结果,并且qt5.14.2+VS2019+pcl1.11.1完成配置的情况下,按理说前面的所有步骤都可以跳过,直接从此步骤开始;

  1. 按下图添加环境变量(前面说了:要将VTK-prefix和VTK-install放到非中文路径)
    image

  2. 将vtk-prefix中【F:\VTK-prefix\plugins\designer】的QVTKWidgetPlugin.dll放到QT编译器msvc2017_64的文件目录下【D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\designer】 (提示:此处的vtk-prefix和qt的路径根据自己的情况操作)

  3. 同理将vtk-install位置【F:\VTK\VTK-install\lib\Release】 的QVTKWidgetPlugin.expQVTKWidgetPlugin.lib放到【D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\designer】 目录下,最终如下图;
    image

  4. 点击对应编译器msvc2017_64版本目录下【D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin】的designer.exe,就可以看到对应的QVTK组件,如下图:
    image


十、vs2019编写demo测试

  1. 打开VS2019 创建一个Qt Widgets Application(我这里项目名取为:vtk_demo),一直点next即可。

  2. 选择编译模式Release/x64 ,
    image

  3. 点击Form Files下的vtk_demo.ui,如果出现无法打开ui文件,则鼠标右键,选择打开方式
    image

  4. 点击添加,程序选择对应编译器下面的designer.exe【D:\QT\QT5.14.2\5.14.2\msvc2017_64\bin\designer.exe】(根据你自己的路径设置)
    image

  5. 点击确定即可,选中Qt Designer点击下图设为默认值
    image

  6. 测试一下,在vtk_demo.ui中添加“QVTKWidget”控件到ui界面中,如下图所示
    image

  7. 点击保存ui界面后,运行测试,提示如下图错误,找不到QVTKWidget.h头文件,还需继续配置;
    image

  8. 点击项目右边的属性。
    image

  9. 在VC++ 目录中,设置包含目录,将路径【D:\VTK-prefix\include\vtk-8.2】放入包含目录。
    image

  10. 在VC++ 目录中,设置库目录,将路径【D:\VTK-prefix\lib】放入库目录。
    image

  11. 来到【D:\VTK-prefix\lib】目录下,新建一个libtext.bat文件,输入: DIR *.lib /B >LIBLIST.TXT,双击这个bat会再生成一个LIBLIST.TXT文件。
    image

image

  1. 将这个LIBLIST.txt文件中的内容全选复制,来到链接器的输入部分,编辑附加依赖项,将刚才复制的全部放进去,然后点确定。(此步会添加vtk相关的库文件名,pcl相关的库文件名也要添加进去,在十一章会讲);
    image

  2. 点击应用,然后确定,退出对话框
    image

  3. 在右侧main.cpp放入我们的测试代码
    image

测试代码如下:

    #include <QApplication>
    #include <vtkSphereSource.h>
    #include <vtkPolyData.h>
    #include <vtkSmartPointer.h>
    #include <vtkPolyDataMapper.h>
    #include <vtkActor.h>
    #include <vtkRenderWindow.h>
    #include <vtkRenderer.h>
    #include <vtkRenderWindowInteractor.h>
    #include "vtkAutoInit.h"
    VTK_MODULE_INIT(vtkRenderingOpenGL2);
    VTK_MODULE_INIT(vtkInteractionStyle);
    int main(int argc, char* argv[])
    {
        vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();
        sphereSource->SetCenter(0.0, 0.0, 0.0);
        sphereSource->SetRadius(5.0);
        vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
        mapper->SetInputConnection(sphereSource->GetOutputPort());
        vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
        actor->SetMapper(mapper);
        vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
        vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
        renderWindow->AddRenderer(renderer);
        vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =        vtkSmartPointer<vtkRenderWindowInteractor>::New();
        renderWindowInteractor->SetRenderWindow(renderWindow);
        renderer->AddActor(actor);
        renderer->SetBackground(.3, .6, .3);
        renderWindow->Render();
        renderWindowInteractor->Start();
        return EXIT_SUCCESS;
    }
  1. 点击编译,发现有错误,如图:
    image

  2. 解决方法:参考下图把SDL检查关掉,右键->属性
    image

  3. 将SDL检查设置为“否”,然后点击应用->确定
    image

  4. 重新编译运行成功
    image


十一、VS搭建点云开发软件工程相关配置。

(一)、说明

通过前面的介绍我们已经初步建立了开发环境,并且也通过编写测试程序展示了运行效果,但是毕竟我编写的程序比较简单,所使用的库也比较少。如果现在你从别人那里拿到一个现成的VS开发的点云工程,需要在你的开发环境中运行起来,还是需要进行一定的修改。因为别人的环境配置参数和你的肯定不同,比如别人用的是vs2015开发的,qt安装路径,vtk库路径和你的不一样,而你拿到手的工程都是保留的按人家环境配置的参数,肯定是无法跑起来的。所以我重新整理了一下一些比较重要的配置关键点供大家参考。

(二)、VS2019软件工程配置要点

1. VC++目录

image

  • 包含目录:

包含目录主要是告诉编译器去哪里寻找头文件(.h 文件)。头文件包含了函数声明、类定义等内容,是 C/C++ 程序编译的基础。假设你在项目中使用了第三方库,三方库的头文件通常位于一个特定的目录下(例如C:\xxx\include),你需要将这个目录添加到包含目录中。这样,当你在代码中包含#include <xxxx/xxx.hpp>这样的语句时,编译器才能找到对应的头文件。在本项目中我们需要将pcl和vtk相关的的包含目录添加进去,主要包含如下:

F:\VTK-prefix\include\vtk-8.2
D:\Program Files\PCL1.11.1\3rdParty\Boost\include\boost-1_74
D:\Program Files\PCL1.11.1\3rdParty\FLANN\include
D:\Program Files\PCL1.11.1\3rdParty\Qhull\include
D:\Program Files\PCL1.11.1\3rdParty\VTK\include\vtk-8.2
D:\Program Files\PCL1.11.1\3rdParty\OpenNI2\Include
D:\Program Files\PCL1.11.1\3rdParty\Eigen\eigen3
D:\Program Files\PCL1.11.1\include\pcl-1.11

如下错误可能是包含路径没有添加(比如:D:\Program Files\PCL1.11.1\3rdParty\Boost\include\boost-1_74没添加)
image

特点:一般提示无法打开源文件或包含文件,提示没这样的目录或文件

  • 库目录:

库目录是用来指定链接器寻找库文件(.lib 文件用于静态链接,.dll 文件用于动态链接)的路径。库文件包含了已经编译好的函数代码,在链接阶段会与你的项目代码合并。比如库文件可能位于C:\xxx\lib目录。你需要将这个目录添加到库目录中。对于静态链接,链接器会在这个目录中寻找.lib文件(如xxx.lib),并将其中的函数代码链接到你的可执行文件中;对于动态链接,虽然程序在运行时才真正加载.dll文件,但链接器也需要知道这些.dll对应的.lib文件(导入库)的位置。在本项目中,我们需要将如下库目录路径添加进去:

F:\VTK-prefix\lib
D:\Program Files\PCL1.11.1\lib
D:\Program Files\PCL1.11.1\3rdParty\Boost\lib
D:\Program Files\PCL1.11.1\3rdParty\FLANN\lib
D:\Program Files\PCL1.11.1\3rdParty\Qhull\lib
D:\Program Files\PCL1.11.1\3rdParty\VTK\lib
D:\Program Files\PCL1.11.1\3rdParty\OpenNI2\Lib

如下报错可能是库目录没有添加:(比如D:\Program Files\PCL1.11.1\3rdParty\Boost\lib没添加)
image

特点:错误码带有LNK字样

2. QT Project Settings

image

  • Qt Installation

这个步骤是确保项目使用正确的 Qt 库和工具链,如按照前面教程的qt插件配置,这里自动会添加msvc2017_64选项,这里选中即可;

  • Qt Modules

这里需要正确勾选项目中使用的modules,如果少了相关模块,会报无法打开Qt相关的文件,提示无相关文件和目录。如下图:缺失widget模块,报错情况。
image

3. 链接器->输入

image

  • 附加依赖项

前面介绍了VC++目录下的”包含目录“和“库目录”,都是告诉编译器编译时去哪里找需要的库,这里的附加依赖项则是告知链接器在链接过程中需要将哪些具体的.lib 文件与项目的目标文件进行合并,以生成最终的可执行文件或库文件。这些库文件通常包含了项目所依赖的函数、类和其他代码实现,若不指定,链接器将无法找到并链接这些必要的代码,导致生成的程序因缺少所需功能而无法正常运行或出现链接错误,本项目中需要将如下的库添加进去(pcl相关lib+vtk相关lib):

1)、vtk相关的库文件127个(地址:F:\VTK-prefix\lib下所有的.lib文件名)

vtkChartsCore-8.2.lib
vtkCommonColor-8.2.lib
vtkCommonComputationalGeometry-8.2.lib
vtkCommonCore-8.2.lib
vtkCommonDataModel-8.2.lib
vtkCommonExecutionModel-8.2.lib
vtkCommonMath-8.2.lib
vtkCommonMisc-8.2.lib
vtkCommonSystem-8.2.lib
vtkCommonTransforms-8.2.lib
vtkDICOMParser-8.2.lib
vtkDomainsChemistry-8.2.lib
vtkDomainsChemistryOpenGL2-8.2.lib
vtkdoubleconversion-8.2.lib
vtkexodusII-8.2.lib
vtkexpat-8.2.lib
vtkFiltersAMR-8.2.lib
vtkFiltersCore-8.2.lib
vtkFiltersExtraction-8.2.lib
vtkFiltersFlowPaths-8.2.lib
vtkFiltersGeneral-8.2.lib
vtkFiltersGeneric-8.2.lib
vtkFiltersGeometry-8.2.lib
vtkFiltersHybrid-8.2.lib
vtkFiltersHyperTree-8.2.lib
vtkFiltersImaging-8.2.lib
vtkFiltersModeling-8.2.lib
vtkFiltersParallel-8.2.lib
vtkFiltersParallelImaging-8.2.lib
vtkFiltersPoints-8.2.lib
vtkFiltersProgrammable-8.2.lib
vtkFiltersSelection-8.2.lib
vtkFiltersSMP-8.2.lib
vtkFiltersSources-8.2.lib
vtkFiltersStatistics-8.2.lib
vtkFiltersTexture-8.2.lib
vtkFiltersTopology-8.2.lib
vtkFiltersVerdict-8.2.lib
vtkfreetype-8.2.lib
vtkGeovisCore-8.2.lib
vtkgl2ps-8.2.lib
vtkglew-8.2.lib
vtkGUISupportQt-8.2.lib
vtkGUISupportQtSQL-8.2.lib
vtkhdf5-8.2.lib
vtkhdf5_hl-8.2.lib
vtkImagingColor-8.2.lib
vtkImagingCore-8.2.lib
vtkImagingFourier-8.2.lib
vtkImagingGeneral-8.2.lib
vtkImagingHybrid-8.2.lib
vtkImagingMath-8.2.lib
vtkImagingMorphological-8.2.lib
vtkImagingSources-8.2.lib
vtkImagingStatistics-8.2.lib
vtkImagingStencil-8.2.lib
vtkInfovisCore-8.2.lib
vtkInfovisLayout-8.2.lib
vtkInteractionImage-8.2.lib
vtkInteractionStyle-8.2.lib
vtkInteractionWidgets-8.2.lib
vtkIOAMR-8.2.lib
vtkIOAsynchronous-8.2.lib
vtkIOCityGML-8.2.lib
vtkIOCore-8.2.lib
vtkIOEnSight-8.2.lib
vtkIOExodus-8.2.lib
vtkIOExport-8.2.lib
vtkIOExportOpenGL2-8.2.lib
vtkIOExportPDF-8.2.lib
vtkIOGeometry-8.2.lib
vtkIOImage-8.2.lib
vtkIOImport-8.2.lib
vtkIOInfovis-8.2.lib
vtkIOLegacy-8.2.lib
vtkIOLSDyna-8.2.lib
vtkIOMINC-8.2.lib
vtkIOMovie-8.2.lib
vtkIONetCDF-8.2.lib
vtkIOParallel-8.2.lib
vtkIOParallelXML-8.2.lib
vtkIOPLY-8.2.lib
vtkIOSegY-8.2.lib
vtkIOSQL-8.2.lib
vtkIOTecplotTable-8.2.lib
vtkIOVeraOut-8.2.lib
vtkIOVideo-8.2.lib
vtkIOXML-8.2.lib
vtkIOXMLParser-8.2.lib
vtkjpeg-8.2.lib
vtkjsoncpp-8.2.lib
vtklibharu-8.2.lib
vtklibxml2-8.2.lib
vtkLocalExample-8.2.lib
vtklz4-8.2.lib
vtklzma-8.2.lib
vtkmetaio-8.2.lib
vtkNetCDF-8.2.lib
vtkogg-8.2.lib
vtkParallelCore-8.2.lib
vtkpng-8.2.lib
vtkproj-8.2.lib
vtkpugixml-8.2.lib
vtkRenderingAnnotation-8.2.lib
vtkRenderingContext2D-8.2.lib
vtkRenderingContextOpenGL2-8.2.lib
vtkRenderingCore-8.2.lib
vtkRenderingFreeType-8.2.lib
vtkRenderingGL2PSOpenGL2-8.2.lib
vtkRenderingImage-8.2.lib
vtkRenderingLabel-8.2.lib
vtkRenderingLOD-8.2.lib
vtkRenderingOpenGL2-8.2.lib
vtkRenderingQt-8.2.lib
vtkRenderingVolume-8.2.lib
vtkRenderingVolumeOpenGL2-8.2.lib
vtksqlite-8.2.lib
vtksys-8.2.lib
vtktheora-8.2.lib
vtktiff-8.2.lib
vtkverdict-8.2.lib
vtkViewsContext2D-8.2.lib
vtkViewsCore-8.2.lib
vtkViewsInfovis-8.2.lib
vtkViewsQt-8.2.lib
vtkzlib-8.2.lib

2)、pcl相关库文件40个(地址:D:\Program Files\PCL1.11.1\lib下所有的.lib文件)

pcl_common.lib
pcl_commond.lib
pcl_features.lib
pcl_featuresd.lib
pcl_filters.lib
pcl_filtersd.lib
pcl_io.lib
pcl_iod.lib
pcl_io_ply.lib
pcl_io_plyd.lib
pcl_kdtree.lib
pcl_kdtreed.lib
pcl_keypoints.lib
pcl_keypointsd.lib
pcl_ml.lib
pcl_mld.lib
pcl_octree.lib
pcl_octreed.lib
pcl_outofcore.lib
pcl_outofcored.lib
pcl_people.lib
pcl_peopled.lib
pcl_recognition.lib
pcl_recognitiond.lib
pcl_registration.lib
pcl_registrationd.lib
pcl_sample_consensus.lib
pcl_sample_consensusd.lib
pcl_search.lib
pcl_searchd.lib
pcl_segmentation.lib
pcl_segmentationd.lib
pcl_stereo.lib
pcl_stereod.lib
pcl_surface.lib
pcl_surfaced.lib
pcl_tracking.lib
pcl_trackingd.lib
pcl_visualization.lib
pcl_visualizationd.lib

如下报错可能是附加依赖项没有添加:(比如:pcl相关库文件没添加)
image
特点:错误码为LNK2001,提示无法解析外部符号

(三)、其它问题

  • 提示:找不到“vtkGUISupportQt-8.2.dll”,如下图;
    image

​ 解决办法1:将“F:\VTK-prefix\bin“目录下的vtkGUISupportQt-8.2.dll复制到“D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin”目录下(推荐);

​ 解决办法2:将“F:\VTK-prefix\bin“目录下的vtkGUISupportQt-8.2.dll复制到源码编译路径下,比如“vtk_demo\x64\Release”目录下;

十二、结语

  • 总结

以上就是VS2019+Qt5.14.2+PCL1.11.1+VTK-8.2.0环境配置的总体情况,总体来看还是比较繁琐的。如果一步一步的弄,还是需要花费相当多的时间的。个人觉得只要有现成的,已经编译好的vtk库直接用就行了,没必要用CMake+VS自己编一套。后续我会在另外一台电脑上直接使用我编译好的vtk来开发软件。

  • 下面附上我自己写的一个软件显示点云的效果:
    image


原文地址:https://blog.csdn.net/hs977986979/article/details/144798088

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!