【踩坑记录】Win10+VS2017安装配置PCL
整吐了,慢慢来慢慢来。什么时候才能进入懒人一键安装(一键被淘汰)的时代
还看到一个教程:https://github.com/PointCloudLibrary/pcl/issues/4462
如果之后换电脑可能会试试CMake的方法?就目前来说我只想把这烂摊子解决了
安装PCL
前往:https://github.com/PointCloudLibrary/pcl/releases
下载All In One版本(1.10.0)。同时下载对应的pdb压缩包。当然也可以自己下载Source code源码自己编译,但用不惯linux,就直接懒人一键吧。
双击exe安装,路径,驱动,ok
弹出path too long installer unable to modify path,然后安装就结束了。
去环境变量里看一下,系统变量里只添加了PCL_ROOT,路径是前面自定义的PCL安装路径。
打开Path,发现里面并没有PCL的相关环境变量。添加以下5项:
%PCL_ROOT%\bin
%PCL_ROOT%\3rdParty\FLANN\bin
%PCL_ROOT%\3rdParty\VTK\bin
%PCL_ROOT%\3rdParty\Qhull\bin
%PCL_ROOT%\3rdParty\OpenNI2\Tools
后来又因为各种原因修改了环境变量:
1.这5项都可以在PCL路径下找到,可以去PCL目录下对照着检查一下,照着一篇博客配置的结果不对,发现是Qhull在3rdParty目录下。不知道是那个博主写错了还是后来版本更新修改了位置。
还有OpenNI2,我之后在添加lib的时候发现,...\3rdParty\OpenNI2目录里只有一个安装程序,然后我搜索了一下。找到OpenNI2的安装目录在C盘。所以上面的最后一条环境变量需要修改:
C:\Program Files\OpenNI2\Tools
2.见后面dll文件找不到的问题,我将%PCL_ROOT%替换为了绝对路径。
在VS2017中配置PCL
项目->属性
1.C/C++->常规->附加包含目录,添加7项
供复制:(这是后来又一次装PCL,所以版本不一样)
D:\PCL\PCL 1.12.1\3rdParty\Eigen\eigen3
D:\PCL\PCL 1.12.1\3rdParty\VTK\include\vtk-9.1
D:\PCL\PCL 1.12.1\3rdParty\Qhull\include
D:\PCL\PCL 1.12.1\3rdParty\FLANN\include
D:\PCL\PCL 1.12.1\include\pcl-1.12
D:\PCL\PCL 1.12.1\3rdParty\Boost\include\boost-1_78
C:\Program Files\OpenNI2\Include
2.链接器->常规->附加库目录,添加7项
供复制:
D:\PCL\PCL 1.12.1\3rdParty\Qhull\lib
D:\PCL\PCL 1.12.1\3rdParty\VTK\lib
D:\PCL\PCL 1.12.1\3rdParty\FLANN\lib
D:\PCL\PCL 1.12.1\3rdParty\Boost\lib
D:\PCL\PCL 1.12.1\lib
C:\Program Files\OpenNI2\Lib
3.链接器->输入,附加依赖项,这里要添加的东西就很多了,建议参考:VS中PCL库附加依赖项配置 - life_limbo - 博客园,利用bat脚本来生成包含文件名的txt,方便复制。要提一句,在pcl的lib下,因为我的文件和参考的博客里的文件是不同的,参考博客里的文件名末尾是debug和release,而我的debug版本是末尾为d,release版本末尾无d。所以要修改bat脚本的内容,当然很简单,改一下匹配就行了。
与链接中的版本不同,我安装的pcl对应文件后缀改变了
写了个python来实现之前同样的功能,一次性全部搞定!
import osdef lib_to_txt(save_root_path, files_from, arg_debug_suffix, arg_release_suffix):files_debug = open(os.path.join(save_root_path, "debug.txt"), "a")files_release = open(os.path.join(save_root_path, "release.txt"), "a")files_all = open(os.path.join(save_root_path, "all.txt"), "a")files = os.listdir(files_from)for file in files:if file[-4:] == ".lib":if file[-len(arg_debug_suffix):] == arg_debug_suffix:files_debug.write(file + "\n")files_all.write(file + "\n")else:if file[-len(arg_release_suffix):] == arg_release_suffix:files_release.write(file + "\n")files_all.write(file + "\n")files_debug.close()files_release.close()if __name__ == '__main__':save_txt_to = "D:/PCL/" # save txt to# need check and changeinput = [{"lib_path": r"D:\PCL\PCL 1.12.1\lib", "debug_suffix": "d.lib", "release_suffix": ".lib"},{"lib_path": r"D:\PCL\PCL 1.12.1\3rdParty/Boost/lib", "debug_suffix": "-gd-x64-1_78.lib", "release_suffix": "-x64-1_78.lib"},{"lib_path": r"D:\PCL\PCL 1.12.1\3rdParty\VTK\lib", "debug_suffix": "d.lib", "release_suffix": ".lib"},{"lib_path": r"C:\Program Files\OpenNI2\Lib", "debug_suffix": "d.lib", "release_suffix": ".lib"},{"lib_path": r"D:\PCL\PCL 1.12.1\3rdParty\FLANN\lib", "debug_suffix": "-gd.lib", "release_suffix": ".lib"},{"lib_path": r"D:\PCL\PCL 1.12.1\3rdParty\Qhull\lib", "debug_suffix": "d.lib", "release_suffix": ".lib"}]for dict in input:print(f'{dict["lib_path"]}, {dict["debug_suffix"]}, {dict["release_suffix"]}')lib_to_txt(save_txt_to, dict["lib_path"], dict["debug_suffix"], dict["release_suffix"])
%PCL_ROOT%\lib
文件夹都需要根据文件夹中的内容修改匹配后缀
3rdParty/Boost/lib
3rdParty\VTK\lib
OpenNI2\Lib
3rdParty\FLANN\lib
3rdParty\Qhull\lib
(不建议直接复制)列一下我添加的debug依赖项:
pcl_commond.lib
pcl_featuresd.lib
pcl_filtersd.lib
pcl_iod.lib
pcl_io_plyd.lib
pcl_kdtreed.lib
pcl_keypointsd.lib
pcl_mld.lib
pcl_octreed.lib
pcl_outofcored.lib
pcl_peopled.lib
pcl_recognitiond.lib
pcl_registrationd.lib
pcl_sample_consensusd.lib
pcl_searchd.lib
pcl_segmentationd.lib
pcl_stereod.lib
pcl_surfaced.lib
pcl_trackingd.lib
pcl_visualizationd.lib
libboost_atomic-vc141-mt-gd-x64-1_72.lib
libboost_chrono-vc141-mt-gd-x64-1_72.lib
libboost_container-vc141-mt-gd-x64-1_72.lib
libboost_context-vc141-mt-gd-x64-1_72.lib
libboost_contract-vc141-mt-gd-x64-1_72.lib
libboost_coroutine-vc141-mt-gd-x64-1_72.lib
libboost_date_time-vc141-mt-gd-x64-1_72.lib
libboost_exception-vc141-mt-gd-x64-1_72.lib
libboost_fiber-vc141-mt-gd-x64-1_72.lib
libboost_filesystem-vc141-mt-gd-x64-1_72.lib
libboost_graph-vc141-mt-gd-x64-1_72.lib
libboost_iostreams-vc141-mt-gd-x64-1_72.lib
libboost_locale-vc141-mt-gd-x64-1_72.lib
libboost_log-vc141-mt-gd-x64-1_72.lib
libboost_log_setup-vc141-mt-gd-x64-1_72.lib
libboost_math_c99-vc141-mt-gd-x64-1_72.lib
libboost_math_c99f-vc141-mt-gd-x64-1_72.lib
libboost_math_c99l-vc141-mt-gd-x64-1_72.lib
libboost_math_tr1-vc141-mt-gd-x64-1_72.lib
libboost_math_tr1f-vc141-mt-gd-x64-1_72.lib
libboost_math_tr1l-vc141-mt-gd-x64-1_72.lib
libboost_numpy37-vc141-mt-gd-x64-1_72.lib
libboost_prg_exec_monitor-vc141-mt-gd-x64-1_72.lib
libboost_program_options-vc141-mt-gd-x64-1_72.lib
libboost_python37-vc141-mt-gd-x64-1_72.lib
libboost_random-vc141-mt-gd-x64-1_72.lib
libboost_regex-vc141-mt-gd-x64-1_72.lib
libboost_serialization-vc141-mt-gd-x64-1_72.lib
libboost_stacktrace_noop-vc141-mt-gd-x64-1_72.lib
libboost_stacktrace_windbg-vc141-mt-gd-x64-1_72.lib
libboost_stacktrace_windbg_cached-vc141-mt-gd-x64-1_72.lib
libboost_system-vc141-mt-gd-x64-1_72.lib
libboost_test_exec_monitor-vc141-mt-gd-x64-1_72.lib
libboost_thread-vc141-mt-gd-x64-1_72.lib
libboost_timer-vc141-mt-gd-x64-1_72.lib
libboost_type_erasure-vc141-mt-gd-x64-1_72.lib
libboost_unit_test_framework-vc141-mt-gd-x64-1_72.lib
libboost_wave-vc141-mt-gd-x64-1_72.lib
libboost_wserialization-vc141-mt-gd-x64-1_72.lib
OpenNI2.lib
flann-gd.lib
flann_cpp-gd.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
qhullcpp_d.lib
qhullstatic_d.lib
qhullstatic_r_d.lib
qhull_d.lib
qhull_p_d.lib
qhull_r_d.lib
vtkChartsCore-8.2-gd.lib
vtkCommonColor-8.2-gd.lib
vtkCommonComputationalGeometry-8.2-gd.lib
vtkCommonCore-8.2-gd.lib
vtkCommonDataModel-8.2-gd.lib
vtkCommonExecutionModel-8.2-gd.lib
vtkCommonMath-8.2-gd.lib
vtkCommonMisc-8.2-gd.lib
vtkCommonSystem-8.2-gd.lib
vtkCommonTransforms-8.2-gd.lib
vtkDICOMParser-8.2-gd.lib
vtkDomainsChemistry-8.2-gd.lib
vtkDomainsChemistryOpenGL2-8.2-gd.lib
vtkdoubleconversion-8.2-gd.lib
vtkexodusII-8.2-gd.lib
vtkexpat-8.2-gd.lib
vtkFiltersAMR-8.2-gd.lib
vtkFiltersCore-8.2-gd.lib
vtkFiltersExtraction-8.2-gd.lib
vtkFiltersFlowPaths-8.2-gd.lib
vtkFiltersGeneral-8.2-gd.lib
vtkFiltersGeneric-8.2-gd.lib
vtkFiltersGeometry-8.2-gd.lib
vtkFiltersHybrid-8.2-gd.lib
vtkFiltersHyperTree-8.2-gd.lib
vtkFiltersImaging-8.2-gd.lib
vtkFiltersModeling-8.2-gd.lib
vtkFiltersParallel-8.2-gd.lib
vtkFiltersParallelImaging-8.2-gd.lib
vtkFiltersPoints-8.2-gd.lib
vtkFiltersProgrammable-8.2-gd.lib
vtkFiltersSelection-8.2-gd.lib
vtkFiltersSMP-8.2-gd.lib
vtkFiltersSources-8.2-gd.lib
vtkFiltersStatistics-8.2-gd.lib
vtkFiltersTexture-8.2-gd.lib
vtkFiltersTopology-8.2-gd.lib
vtkFiltersVerdict-8.2-gd.lib
vtkfreetype-8.2-gd.lib
vtkGeovisCore-8.2-gd.lib
vtkgl2ps-8.2-gd.lib
vtkglew-8.2-gd.lib
vtkGUISupportMFC-8.2-gd.lib
vtkhdf5-8.2-gd.lib
vtkhdf5_hl-8.2-gd.lib
vtkImagingColor-8.2-gd.lib
vtkImagingCore-8.2-gd.lib
vtkImagingFourier-8.2-gd.lib
vtkImagingGeneral-8.2-gd.lib
vtkImagingHybrid-8.2-gd.lib
vtkImagingMath-8.2-gd.lib
vtkImagingMorphological-8.2-gd.lib
vtkImagingSources-8.2-gd.lib
vtkImagingStatistics-8.2-gd.lib
vtkImagingStencil-8.2-gd.lib
vtkInfovisCore-8.2-gd.lib
vtkInfovisLayout-8.2-gd.lib
vtkInteractionImage-8.2-gd.lib
vtkInteractionStyle-8.2-gd.lib
vtkInteractionWidgets-8.2-gd.lib
vtkIOAMR-8.2-gd.lib
vtkIOAsynchronous-8.2-gd.lib
vtkIOCityGML-8.2-gd.lib
vtkIOCore-8.2-gd.lib
vtkIOEnSight-8.2-gd.lib
vtkIOExodus-8.2-gd.lib
vtkIOExport-8.2-gd.lib
vtkIOExportOpenGL2-8.2-gd.lib
vtkIOExportPDF-8.2-gd.lib
vtkIOGeometry-8.2-gd.lib
vtkIOImage-8.2-gd.lib
vtkIOImport-8.2-gd.lib
vtkIOInfovis-8.2-gd.lib
vtkIOLegacy-8.2-gd.lib
vtkIOLSDyna-8.2-gd.lib
vtkIOMINC-8.2-gd.lib
vtkIOMovie-8.2-gd.lib
vtkIONetCDF-8.2-gd.lib
vtkIOParallel-8.2-gd.lib
vtkIOParallelXML-8.2-gd.lib
vtkIOPLY-8.2-gd.lib
vtkIOSegY-8.2-gd.lib
vtkIOSQL-8.2-gd.lib
vtkIOTecplotTable-8.2-gd.lib
vtkIOVeraOut-8.2-gd.lib
vtkIOVideo-8.2-gd.lib
vtkIOXML-8.2-gd.lib
vtkIOXMLParser-8.2-gd.lib
vtkjpeg-8.2-gd.lib
vtkjsoncpp-8.2-gd.lib
vtklibharu-8.2-gd.lib
vtklibxml2-8.2-gd.lib
vtklz4-8.2-gd.lib
vtklzma-8.2-gd.lib
vtkmetaio-8.2-gd.lib
vtkNetCDF-8.2-gd.lib
vtkogg-8.2-gd.lib
vtkParallelCore-8.2-gd.lib
vtkpng-8.2-gd.lib
vtkproj-8.2-gd.lib
vtkpugixml-8.2-gd.lib
vtkRenderingAnnotation-8.2-gd.lib
vtkRenderingContext2D-8.2-gd.lib
vtkRenderingContextOpenGL2-8.2-gd.lib
vtkRenderingCore-8.2-gd.lib
vtkRenderingExternal-8.2-gd.lib
vtkRenderingFreeType-8.2-gd.lib
vtkRenderingGL2PSOpenGL2-8.2-gd.lib
vtkRenderingImage-8.2-gd.lib
vtkRenderingLabel-8.2-gd.lib
vtkRenderingLOD-8.2-gd.lib
vtkRenderingOpenGL2-8.2-gd.lib
vtkRenderingVolume-8.2-gd.lib
vtkRenderingVolumeOpenGL2-8.2-gd.lib
vtksqlite-8.2-gd.lib
vtksys-8.2-gd.lib
vtktheora-8.2-gd.lib
vtktiff-8.2-gd.lib
vtkverdict-8.2-gd.lib
vtkViewsContext2D-8.2-gd.lib
vtkViewsCore-8.2-gd.lib
vtkViewsInfovis-8.2-gd.lib
vtkzlib-8.2-gd.lib
运行demo时遇到的错误
LINK : fatal error LNK1104: 无法打开文件“libboost_filesystem-vc141-mt-gd-x64-1_72.lib”
LINK : fatal error LNK1104: 无法打开文件“libboost_filesystem-vc141-mt-sgd-x64-1_72.lib”
LINK : fatal error LNK1104: 无法打开文件“libboost_filesystem-vc141-mt-sgd-x64-1_72.lib”_winka9587的博客-CSDN博客
由于找不到vcruntime140_1d.dll,无法继续执行代码
这个报错网上很常见了,一搜一大把,只要去下一个vcruntime140_1d.dll然后放到C:\Windows\System32(64位)
找不到pcl_iod.dll
找不到pcl_commond.dll
去pcl-版本/bin目录下,能够找到这两个dll文件,修改了一下环境变量,把里面的%PCL_ROOT%换成了绝对路径。
整个demo测试
参考 PCL demo运行_tellw0.0的博客-CSDN博客
如果报错_open不安全
C/C++-预处理器-预处理器定义:_CRT_SECURE_NO_WARNINGS
【踩坑记录】Win10+VS2017安装配置PCL相关推荐
- AI Earth挑战赛docker踩坑记录 WIN10+PyTorch
文章目录 0.docker环境说明 1.数据准备 2.py文件 3.requirements文本文件 4.shell文件 5.dockerfile文件 6.Powershell 7.提交结果 0.do ...
- layaari2-cmd 踩坑记录,解决安装失败问题
起因:最近有个laya项目搞一下,挺大的项目,本着省心省力的原则,用laya编辑器的编译工具尝试编译了一下,好家伙用了30分钟.这就没办法干活了.只能安装layaari2-cmd了. 以前安装过一次, ...
- alpine初始化配置和踩坑记录
alpine初始化配置和踩坑记录 目录 alpine初始化配置和踩坑记录 开启root登录SSH 官方配置工具 修改DNS和apk源 设置时区 解决console字体太小并添加中文字体 参考文献 开启 ...
- Ubuntu20.0编译LineageOs14刷入小米8Lite(青春版)流程与踩坑记录
本文全是个人经历与踩坑记录,不同机型配置可能不一样 全文踩坑内容错误加粗 编写时间:2022.5.24-14:53 机型配置: 虚拟机 4核心 每核心2线程 手机 小米8Lite 设备代号:plati ...
- Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子
Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...
- openmeetings6.10安装配置 踩坑记录
2021SC@SDUSC 本文采用的是下载源码并利用idea安装依赖.进行配置的方法 openmeetings6.10源码下载地址: Github apache/openmeetings 官方源码运行 ...
- Detectron2 win10踩坑记录
Detectron2 win10踩坑记录 安装CUDA clone到本地 修改cocoeval.cpp第483行(不同版本行数不一样) 创建虚拟环境 安装pycocotools 安装VS2019或者生 ...
- 博途v17与winCC安装流程与踩坑记录
博途v17与winCC7.5安装教程与踩坑记录 安装教程 博途安装流程 第一步 注册表删除 第二步 启用.NET Framework服务 第三步 正式安装 winCC安装流程 博途v17与winCC安 ...
- 为Jupyter notebook配置R kernel过程及踩坑记录
为Jupyter notebook配置R kernel过程及踩坑记录 注意:本文为作者安装过程及折腾的过程,内容比较冗杂,如果读者想直接创建一个属于自己的子环境则参考: 如下文章: anaconda下 ...
最新文章
- python使用缩进来体现代码之间的逻辑关系-python使用缩进来体现代码之间的逻辑关系吗?...
- docker安装mysql指定_Docker安装MySql,并且使用外部客户端链接
- 实例使用pyhanlp创建中文词云
- 【Android】android开发之splash闪屏页的四种实现方式,启动页的实现教程。
- JS Event handler example - event capture and bubble
- 学习笔记(20):Python网络编程并发编程-互斥锁与join的区别
- ERP的配置管理实践
- 同时防服务器维修,加强服务器日常运维,避免宕机灾难发生
- php中的echo、print,print_r、var_dump
- python爬虫源代码_【Python每日一问】Python爬虫能做什么?
- 概率论:假设检验、极大似然估计、无偏估计
- 莫言母亲的八大教育真经
- 最详细教学--实现win10 多用户同时远程登录内网机--win10+frp+rdpwrap+阿里云服务器
- 计算机上的符号在哪找,像w的那个符号在哪里可以找到?word文档
- Excel引用外部表格,通过Key得到想要的数据
- 七夕界的浪漫之光,向你安利程序员的表白方式
- 大话循环神经网络(RNN)
- 绿卡基础知识:I-129
- ECharts如何制作省份地图并在地图上显示自定义图标/散点图
- 外部Portal认证系统 对接 华为 H3C 等设备实现 LDAP AD域 网络准入实名认证
热门文章
- 怎么用stata打开dta文件_用shell命令打开任意格式的文件
- 那些央视没爆光的信息泄露内鬼
- 浅读《简约之美-软件设计之道》
- 梦幻西游手游海外服务器维护,梦幻西游手游服务器5月4系统维护
- 【电脑打不出字来怎么办】
- jetson nano补充:根目录/usr刷机扩容 瘦身
- android飞屏app下载地址,飞屏暴风安卓版下载-飞屏暴风影音 安卓版v7.1.07-PC6安卓网...
- matlab分段函数M文件,MATLAB用命令文件编分段函数
- iic模块PCF8574驱动1602学习记载
- 原生javascript手风琴导航