PCL编程宝典-VS配置PCL

前言

这篇文章介绍的是一种直接在VS里使用编译好的PCL库的方法,适用与不同版本的PCL和VS。在这之前先了解一下一些C++使用第三方库的基本概念。

PCL源代码里包含了.h文件和.cpp文件,这个是不能直接用于二次开发的。一般需要将源代码编译后,生成.h文件.lib文件还有.dll文件后才能用于二次开发。

源代码一般使用VS来编译。不同版本的VS虽然都会编译出.lib文件和.dll文件,这两种文件根据编译时选择的参数,又分为32位版本和64位版本,但是在使用时,需要选择与当前使用的VS版本和开发的软件位数一致的VS编译出来的.lib文件和.dll文件。PCL编译是一项比较繁琐的工作,值得庆幸的是网上已经有编译好的文件,并且将文件打包成一个AllInOne安装包,所以如果没有特殊需求,这个AllInOne安装包基本可以满足大部分开发需求。

在VS配置PCL,需要下载与VS版本对应的AllInOne包下载下来。有了AllInOne安装包和VS就可以进行PCL的二次开发了。要下对安装包,需要了解安装包的命名的含义,以下面的一个AllInOne包的名字为例:PCL-1.8.0-AllInOne-msvc2013-win32.exe,其中,1.8.0表示的PCL的版本号,这个越新越好,然后2013表示这个安装包只适用于VS2013中使用,其它VS版本不行,最后win32表示这个安装包只能用来开发32位的程序。再以下面的安装包名字为例:PCL-1.7.2-AllInOne-msvc2012-win64.exe,这个安装包是PCL1.7.2版本的,其只能用在VS2012上,然后使用在64位的VS项目开发中。注意需要下载多少位的安装包与系统位数无关,而是与你VS里设置的软件位数有关,想开发32位的程序,就下载32位的安装包,64位同理。

整个配置过程分为四步:安装AllInOne包,新建C++项目,配置属性表,拷贝或编写代码。

安装AllInOne包

找到下载的AllInOne安装包,双击打开,进行安装。整个安装过程需要注意以下三点,其它默认即可:

  1. 安装路径最好不要包括中文;
  2. 建议勾选上“Add PCL to the system PATH for all users”;
  3. 安装时,会提示安装OpenNI,这个建议安装在PCL安装路径的3rdParty下的OpenNI2文件夹中。

新建C++项目

在新建项目前,需要把VS重置为C++开发环境,不然一些选项会找不到。以VS2017为例,打开VS,点菜单栏里的“工具”,再点击子菜单“导入和导出设置”,在弹出的对话框里选“重置所有设置”,然后点”下一步”,按需要自行设置是否保持当前设置,再点“下一步”,选择”Visual C++”设置集合,最后点”完成”,即可。

设置好开发环境后,在VS里创建一个C++的控制台项目,根据自己的意愿设置一下项目名和路径。在新建过程中注意以下两点,其它默认即可:

  1. 去掉“预编译头(P)”前的勾
  2. 去掉“安全开发生命周期(SDL)检查(C)”前的勾。

配置属性表

配置属性表的主要目的是告诉VS,去哪里查找PCL库编译好的.h文件.lib文件还有.dll文件。点击VS界面左下角的“属性管理器”,根据你当前编译程序的位数来添加新的属性表,这样下次创建项目时,就可以直接使用配置好的属性表了。添加后,选中添加的属性表,点鼠标右键,选“属性”,在弹出的对话框里设置好三个必须设置的重要项目:附加包含目录,附加库目录,附加依赖项。只有理解里上面这三项的作用,才能学到如何去解决配置中产生的一些问题。

  1. 附加包含目录,其在项目属性“C/C++”子项的“常规”里下,主要用来设置库的头文件路径。这里设置好PCL及第三方库的头文件路径。
  2. 附加库目录,其在项目属性的“连接器”子项的“常规”下,主要用来设置库的lib文件路径。这里设置好设置PCL及第三方库的lib文件路径。
  3. 附加依赖项,其在项目属性的“连接器”子项的“输入”下,主要用来设置编译所需的lib。这里设置好设置PCL及第三方库的lib文件名。debug就添加debug版本的lib,release就添加release的lib。一般文件后面带d或gd的为debug版本的lib。

注意:VS默认只生成32位的程序,如果需要生成64的程序,方法如下:VS界面有个运行项,后面有个debug,在后面有个叫“解决方案平台”的下拉框,其值默认为win32,需要把win32,改成x64,方法是,点win32的箭头,点“配置管理器”,点“活动解决方案平台”,点“新建”,把“键入或选择新平台”,这一项,切换为x64,然后确定,此时,原来的win32已变为x64。这时编译生成的程序就是64位版本的。

在配置完属性表后,还需要配置dll。配置dll有四种方法,第一种,把dll拷贝到system32里去,第二种,把dll拷贝到编译出来的程序的文件中,第三种,在系统的path中添加dll的路径,本文选用第四种方法,直接配置到项目中。具体方法如下:在“解决方案资源管理器”里选中项目右键点“属性”,然后选“调试”设置环境的变量值,规则如下:PATH=;$(PATH)。在等号后添加所有PCL及第三方库的dll路径以英文的“;”隔开,最后加上一个$(PATH)即可。例如我设置的如下PATH=$(PCL_ROOT)\bin;$(PCL_ROOT)\3rdParty\FLANN\bin;$(PCL_ROOT)\3rdParty\VTK\bin;$(PCL_ROOT)\Qhull\bin;$(PCL_ROOT)\3rdParty\OpenNI2\Tools;$(PATH)。大家根据自己的安装路径,灵活变通。

开发

完成上述步骤后,就可以把代码拷贝到新建立的项目的cpp文件中去,然后编译,运行。测试一下是否运行成功。如果不成功,可以看博客里的另一篇:PCL编程宝典-代码编译常见问题及解决办法。测试代码如下。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注