前言
之前安装过PCL-1.6.0,在VS2010里配置成功了,当时踩了很多的坑,但疏于记录所以没有很好地进行总结。最近由于需要用PCL库里的一些新功能,所以下载安装了PCL-1.8.0-AllInOne-mscv2013-win64,并配置在VS2013中。过程中遇到了很多问题,折腾了很久,最终总算解决了暂且暴露出来的问题。把自己的安装配置过程以及遇到的问题翔实地记录下来,一来是当做工作笔记让自己日后参看,二来是给遇到相同问题的朋友们提供一些思路。解决过程中参考的一些有价值的博客文章列在文末。
环境
Win8 x64
Visual Studio 2013
一.准备工作
首先需要下载PCL-1.8.0-AllInOne安装包文件和相应的pdb文件。
- PCL库安装一般有两种方式:一种是先下载PCL的各种第三方依赖库以及PCL的源代码,然后自行进行编译安装;另一种是领用AllInOne版本进行安装。本博文关注的是后一种安装方式。
- 目前PCL官网提供的Windows AllInOne下载版本只有1.5.1和1.6.0,PCL工程页可以查找到PCL-1.8.1的源码和AllInOne安装包以及PCL-1.8.0的源码,但PCL-1.8.0的AllInOne以及其pcd文件链接失效或被墙了(读者后续可以持续关注,如果PCL工程页链接重新生效推荐下载那里的安装包:http://unanancyowen.com/en/pcl18/)。
本博文使用的安装包是从一个参考博客给出的百度网盘中下载的,亲测有效。下载其中的PCL-1.8.0-win64的安装包以及相应的pdb文件,属性表可以不下载,建议自己建立(因为博主用链接里提供的属性表测试时没有成功,后面有介绍自己的属性表的建立方式。目前更新的链接中,有博主自制的属性表文件,博友们可以尝试使用)。
下载链接:https://pan.baidu.com/s/1Imos7DJgeFErARmmeiXEJw 提取码:w2g9
此外,该百度云链接提供了PCL-1.8.0-win32的安装包以及相应的pdb文件。由于博主使用的是x64的,win32版本没有测试过,但原理应该是相通的。
二.安装
1.PCL库安装
双击安装包,安装的时候注意选上“Add PCL to the system PATH for all users”,这样安装程序会自动在系统环境变量中添加“PCL_ROOT”、“OPENNI2_INCLUDE64”、“OPENNI2_LIB64”、“OPENNI2_REDIST64”四个项。
(注意:若安装结束后提示“路径过长无法添加环境变量”,这并不影响;如果安装结束后没有自动在系统环境变量中增加以上四项,则手动加上即可。)
图示皆以我的安装路径为例。
2.OpenNI安装
安装过程中会弹出OpenNI的安装程序,将OpenNI的安装路径设置为“PCL_ROOT”下3rdParty\OpenNI2文件夹,例:
C:\Program Files\PCL 1.8.0\3rdParty\OpenNI2
(这里可以选择安装在其他目录,不过会影响到项目配置)
3.pdb安装
安装程序执行完成后将pdb文件包解压(即PCL-1.8.0-AllInOne-msvc2013-win64-pdb.rar),pdb文件拷贝到“PCL_ROOT”下的bin文件夹中,例:
C:\Program Files\PCL 1.8.0\bin
三.环境变量
上面说过了安装程序会自动添加“PCL_ROOT”项到系统环境变量中,此外还要手动添加PCL、Qhull、FLANN、VTK、OpenNI2的bin目录以及%OPENNI2_REDIST64%到PATH中。
例:
注意:如果安装程序没有自动添加“PCL_ROOT”则需要手动填上,因为如果结合CMake等工具生成工程的话,PCLConfig.cmake文件是通过“PCL_ROOT”来找PCL库的(如下图)。
四.项目配置
1.在VS2013中新建空项目并进行活动平台修改。
注意VS2013中配置管理器(Configuration Manager)默认活动平台(Active Solution plantform)是win32,如果安装的是x64的PCL,需要将其改成x64,否则编译的时候会出现奇怪的问题。
修改方法如下:
打开“解决方案资源管理器”视图 -> 右键目标项目("PCLTest"为例) -> 选择“属性”,进入程序属性页 -> 点击“配置管理器” -> 下拉“平台”按钮,点击“新建” -> 新建平台“x64”,从此处复制设置选“空”,创建新的解决方案平台打钩 -> 完成。
2.新项目属性表的建立与设置
切换到“属性管理器”视图,解决方案资源管理器(Property Manager)