Win10+VS2019编译PCL库1.12.0(含gpu)

PCL1.12.0

Windows 10

VS2019

CMAKE 3.21.1

CUDA 11.3

一、安装cuda和cudnn

        cuda下载地址cudnn下载地址

        先装cuda,然后把cudnn解压后的文件放到cuda目录下对应的文件夹内。

        最后cmd内打命令nvcc -V验证安装。

二、安装3rdParty

PCL releases地址,在这里下载AllInOne和源码。下载AllInOne是为了安装3rdParty。当然需要调试符号的请顺便把pdb一并下载了。

 AllInOne安装的时候不要安装PCL库,而只选择3rdParty。本例中安装路径是D:\Program Files\PCL 1.12.0。

三、编译pcl

        打开cmake-gui(由于boost原因,要用cmake的最新版本),源码选择Source code的解压地址,本例中是D:/open_source_lib/source/pcl-1.12.0。配置输出路径,本例中是D:/open_source_lib/dist/pcl-1.12.0build。点击Configure,安装自己的需求选择架构,我的配置如下图。

报错如下。首先是找不到Eigen。(图是1.11的,1.12.0版本类似)

EIGEN_ROOT      D:/Program Files/PCL 1.12.0/3rdParty/Eigen/eigen3

EIGEN_INCLUDE_DIR        D:/Program Files/PCL 1.12.0/3rdParty/Eigen/eigen3

把缺失的变量补全即可。其他变量同理,记录如下。不必补全所有的变量,缺啥补啥即可。

FLANN_INCLUDE_DIR      D:/Program Files/PCL 1.12.0/3rdParty/FLANN/include

FLANN_LIBRARY       D:/Program Files/PCL 1.12.0/3rdParty/FLANN/lib/flann_cpp_s.lib

FLANN_LIBRARY_DEBUG       D:/Program Files/PCL 1.12.0/3rdParty/FLANN/lib/flann_cpp_s-gd.lib

BOOST_ROOT        D:/Program Files/PCL 1.12.0/3rdParty/Boost/

VTK_DIR              D:/Program Files/PCL 1.12.0/3rdParty/VTK/lib/cmake/vtk-9.0 

QHULL_INCLUDE_DIR         可缺省

QHULL_LIBRARY      D:/Program Files/PCL 1.12.0/3rdParty/Qhull/lib/qhullstatic.lib

QHULL_LIBRARY_DEBUG      D:/Program Files/PCL 1.12.0/3rdParty/Qhull/lib/qhullstatic_d.lib

没有的变量可以通过Add Entry添加,文件名的type选filepath,文件夹名的type选path。

记得勾选WITH_CUDA,这个选项决定你能否使用GPU模块。

完毕之后再Configure可以得到0报错,并显示Configuring done。

然后点击Generate,得到下图信息说明生成成功。

此时在输出目录D:\open_source_lib\dist\pcl-1.12.0build下会出现PCL.sln工程文件。使用VS打开它,右键ALL_BUILD生成,然后INSTALL。

四、可能出现的问题

1.出现关于“__hadd”的报错:

将3rdParty\Eigen\eigen3\Eigen\src\Core\arch\CUDA\Half.h文件212行

EIGEN_STRONG_INLINE __device__ half operator + (const half& a, const half& b) {
  return __hadd(a, b);
}

改成
EIGEN_STRONG_INLINE __device__ half operator + (const half& a, const half& b) {
#if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000
  return __hadd(::__half(a), ::__half(b));
#else
  return __hadd(a, b);
#endif
}

EIGEN_STRONG_INLINE __device__ half operator / (const half& a, const half& b) {
  float num = __half2float(a);
  float denom = __half2float(b);
  return __float2half(num / denom);
}

改为

EIGEN_STRONG_INLINE __device__ half operator / (const half& a, const half& b) {
  #if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000
     return __hdiv(a, b);
  #else
    float num = __half2float(a);
    float denom = __half2float(b);
    return __float2half(num / denom);
  #endif
}

2."pop_t":未声明的标识符

解决:503typedef unsigned long long pop_t语句转移到#if __GNUC__之前

三、新项目配置

包含目录

库目录

预处理器

_CRT_SECURE_NO_WARNINGS
BOOST_USE_WINDOWS_H
PCL_NO_PRECOMPILE

链接器-输入(release)

pcl_common.lib
pcl_cuda_features.lib
pcl_cuda_sample_consensus.lib
pcl_cuda_segmentation.lib
pcl_features.lib
pcl_filters.lib
pcl_gpu_containers.lib
pcl_gpu_features.lib
pcl_gpu_octree.lib
pcl_gpu_segmentation.lib
pcl_gpu_utils.lib
pcl_io.lib
pcl_io_ply.lib
pcl_kdtree.lib
pcl_keypoints.lib
pcl_ml.lib
pcl_octree.lib
pcl_outofcore.lib
pcl_people.lib
pcl_recognition.lib
pcl_registration.lib
pcl_sample_consensus.lib
pcl_search.lib
pcl_segmentation.lib
pcl_stereo.lib
pcl_surface.lib
pcl_tracking.lib
pcl_visualization.lib
OpenNI2.lib
libboost_atomic-vc142-mt-x64-1_76.lib
libboost_bzip2-vc142-mt-x64-1_76.lib
libboost_chrono-vc142-mt-x64-1_76.lib
libboost_container-vc142-mt-x64-1_76.lib
libboost_context-vc142-mt-x64-1_76.lib
libboost_contract-vc142-mt-x64-1_76.lib
libboost_coroutine-vc142-mt-x64-1_76.lib
libboost_date_time-vc142-mt-x64-1_76.lib
libboost_exception-vc142-mt-x64-1_76.lib
libboost_fiber-vc142-mt-x64-1_76.lib
libboost_filesystem-vc142-mt-x64-1_76.lib
libboost_graph-vc142-mt-x64-1_76.lib
libboost_graph_parallel-vc142-mt-x64-1_76.lib
libboost_iostreams-vc142-mt-x64-1_76.lib
libboost_json-vc142-mt-x64-1_76.lib
libboost_locale-vc142-mt-x64-1_76.lib
libboost_log-vc142-mt-x64-1_76.lib
libboost_log_setup-vc142-mt-x64-1_76.lib
libboost_math_c99-vc142-mt-x64-1_76.lib
libboost_math_c99f-vc142-mt-x64-1_76.lib
libboost_math_c99l-vc142-mt-x64-1_76.lib
libboost_math_tr1-vc142-mt-x64-1_76.lib
libboost_math_tr1f-vc142-mt-x64-1_76.lib
libboost_math_tr1l-vc142-mt-x64-1_76.lib
libboost_mpi-vc142-mt-x64-1_76.lib
libboost_nowide-vc142-mt-x64-1_76.lib
libboost_numpy38-vc142-mt-x64-1_76.lib
libboost_prg_exec_monitor-vc142-mt-x64-1_76.lib
libboost_program_options-vc142-mt-x64-1_76.lib
libboost_python38-vc142-mt-x64-1_76.lib
libboost_random-vc142-mt-x64-1_76.lib
libboost_regex-vc142-mt-x64-1_76.lib
libboost_serialization-vc142-mt-x64-1_76.lib
libboost_stacktrace_noop-vc142-mt-x64-1_76.lib
libboost_stacktrace_windbg-vc142-mt-x64-1_76.lib
libboost_stacktrace_windbg_cached-vc142-mt-x64-1_76.lib
libboost_system-vc142-mt-x64-1_76.lib
libboost_test_exec_monitor-vc142-mt-x64-1_76.lib
libboost_thread-vc142-mt-x64-1_76.lib
libboost_timer-vc142-mt-x64-1_76.lib
libboost_type_erasure-vc142-mt-x64-1_76.lib
libboost_unit_test_framework-vc142-mt-x64-1_76.lib
libboost_wave-vc142-mt-x64-1_76.lib
libboost_wserialization-vc142-mt-x64-1_76.lib
libboost_zlib-vc142-mt-x64-1_76.lib
flann.lib
flann_cpp.lib
flann_cpp_s.lib
flann_s.lib
qhullcpp.lib
qhullstatic.lib
qhullstatic_r.lib
qhull_r.lib
vtkChartsCore-9.0.lib
vtkCommonColor-9.0.lib
vtkCommonComputationalGeometry-9.0.lib
vtkCommonCore-9.0.lib
vtkCommonDataModel-9.0.lib
vtkCommonExecutionModel-9.0.lib
vtkCommonMath-9.0.lib
vtkCommonMisc-9.0.lib
vtkCommonSystem-9.0.lib
vtkCommonTransforms-9.0.lib
vtkDICOMParser-9.0.lib
vtkDomainsChemistry-9.0.lib
vtkDomainsChemistryOpenGL2-9.0.lib
vtkdoubleconversion-9.0.lib
vtkexodusII-9.0.lib
vtkexpat-9.0.lib
vtkFiltersAMR-9.0.lib
vtkFiltersCore-9.0.lib
vtkFiltersExtraction-9.0.lib
vtkFiltersFlowPaths-9.0.lib
vtkFiltersGeneral-9.0.lib
vtkFiltersGeneric-9.0.lib
vtkFiltersGeometry-9.0.lib
vtkFiltersHybrid-9.0.lib
vtkFiltersHyperTree-9.0.lib
vtkFiltersImaging-9.0.lib
vtkFiltersModeling-9.0.lib
vtkFiltersParallel-9.0.lib
vtkFiltersParallelImaging-9.0.lib
vtkFiltersPoints-9.0.lib
vtkFiltersProgrammable-9.0.lib
vtkFiltersSelection-9.0.lib
vtkFiltersSMP-9.0.lib
vtkFiltersSources-9.0.lib
vtkFiltersStatistics-9.0.lib
vtkFiltersTexture-9.0.lib
vtkFiltersTopology-9.0.lib
vtkFiltersVerdict-9.0.lib
vtkfreetype-9.0.lib
vtkGeovisCore-9.0.lib
vtkgl2ps-9.0.lib
vtkglew-9.0.lib
vtkhdf5-9.0.lib
vtkhdf5_hl-9.0.lib
vtkImagingColor-9.0.lib
vtkImagingCore-9.0.lib
vtkImagingFourier-9.0.lib
vtkImagingGeneral-9.0.lib
vtkImagingHybrid-9.0.lib
vtkImagingMath-9.0.lib
vtkImagingMorphological-9.0.lib
vtkImagingSources-9.0.lib
vtkImagingStatistics-9.0.lib
vtkImagingStencil-9.0.lib
vtkInfovisCore-9.0.lib
vtkInfovisLayout-9.0.lib
vtkInteractionImage-9.0.lib
vtkInteractionStyle-9.0.lib
vtkInteractionWidgets-9.0.lib
vtkIOAMR-9.0.lib
vtkIOAsynchronous-9.0.lib
vtkIOCityGML-9.0.lib
vtkIOCore-9.0.lib
vtkIOEnSight-9.0.lib
vtkIOExodus-9.0.lib
vtkIOExport-9.0.lib
vtkIOExportGL2PS-9.0.lib
vtkIOExportPDF-9.0.lib
vtkIOGeometry-9.0.lib
vtkIOImage-9.0.lib
vtkIOImport-9.0.lib
vtkIOInfovis-9.0.lib
vtkIOLegacy-9.0.lib
vtkIOLSDyna-9.0.lib
vtkIOMINC-9.0.lib
vtkIOMotionFX-9.0.lib
vtkIOMovie-9.0.lib
vtkIONetCDF-9.0.lib
vtkIOOggTheora-9.0.lib
vtkIOParallel-9.0.lib
vtkIOParallelXML-9.0.lib
vtkIOPLY-9.0.lib
vtkIOSegY-9.0.lib
vtkIOSQL-9.0.lib
vtkIOTecplotTable-9.0.lib
vtkIOVeraOut-9.0.lib
vtkIOVideo-9.0.lib
vtkIOXML-9.0.lib
vtkIOXMLParser-9.0.lib
vtkjpeg-9.0.lib
vtkjsoncpp-9.0.lib
vtklibharu-9.0.lib
vtklibproj-9.0.lib
vtklibxml2-9.0.lib
vtkloguru-9.0.lib
vtklz4-9.0.lib
vtklzma-9.0.lib
vtkmetaio-9.0.lib
vtknetcdf-9.0.lib
vtkogg-9.0.lib
vtkParallelCore-9.0.lib
vtkParallelDIY-9.0.lib
vtkpng-9.0.lib
vtkpugixml-9.0.lib
vtkRenderingAnnotation-9.0.lib
vtkRenderingContext2D-9.0.lib
vtkRenderingContextOpenGL2-9.0.lib
vtkRenderingCore-9.0.lib
vtkRenderingFreeType-9.0.lib
vtkRenderingGL2PSOpenGL2-9.0.lib
vtkRenderingImage-9.0.lib
vtkRenderingLabel-9.0.lib
vtkRenderingLOD-9.0.lib
vtkRenderingOpenGL2-9.0.lib
vtkRenderingSceneGraph-9.0.lib
vtkRenderingUI-9.0.lib
vtkRenderingVolume-9.0.lib
vtkRenderingVolumeOpenGL2-9.0.lib
vtkRenderingVtkJS-9.0.lib
vtksqlite-9.0.lib
vtksys-9.0.lib
vtkTestingRendering-9.0.lib
vtktheora-9.0.lib
vtktiff-9.0.lib
vtkverdict-9.0.lib
vtkViewsContext2D-9.0.lib
vtkViewsCore-9.0.lib
vtkViewsInfovis-9.0.lib
vtkWrappingTools-9.0.lib
vtkzlib-9.0.lib

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答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.1。PCL(Point Cloud Library)是一个开源的用于点云处理的,它提供了一系列的算法和工具,用于处理和分析点云数据。PCL 1.8.1提供了vtk8.0.0所需的点云处理功能和支持。 综上所述,vtk8.0.0编译好的是基于qt5.9、vs2015、pcl1.8.1和vtk8.0的。使用这些工具和,可以轻松地进行3D图像处理和可视化开发,并获得高质量的结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值