1 下载ios
把与VS版本对应PCL的AllInOne包下载下来。要下对安装包,须要了解安装包的命名的含义,如下面的一个AllInOne包的名字为例。安全
PCL-1.8.0-AllInOne-msvc2013-win32.exeoop
其中,1.8.0表示的PCL的版本号,而后2013表示这个安装包只适用于VS2013中使用,其它VS版本不行,最后win32表示这个安装包只能用来开发32位的程序。测试
再如下面的安装包名字为例。ui
PCL-1.7.2-AllInOne-msvc2012-win64.exethis
这个安装包是PCL1.7.2版本的,其只能用在VS2012上,而后使用在64位的VS项目开发中。spa
注意必定要下载正确与VS版本以及想要开发的程序位数对应的AllInOne包。.net
下载地址:http://www.zhangzscn.com/,http://unanancyowen.com/debug
2 安装调试
整个安装过程须要注意如下三点,其它默认便可:
3 新建
通常在VS里建立一个C++的控制台项目,根据本身的意愿设置一下项目名和路径。在新建过程当中注意如下两点,其它默认便可:
4 配置
在配置项目属性环节,须要了解的是编译出来的程序分为两种32位和64位。不一样位数的程序须要对应版本的lib和dll才能编译成功。这里想要编译什么位数的程序,下载对应位数的PCL便可。不一样位数的程序又分为:Debug和Release。默认生成的是Debug程序。编译Debug版本的程序须要Debug版本的lib和dll,编译Release版本的程序须要Release版本的lib和dll。这些lib和dll在PCL的安装路径路径里有。若是须要生成上述四种程序,须要分别设置对应的项目属性表。
根据当前须要编译的程序位数和传统的直接在“解决方案资源管理器”里选中项目右键设置项目属性的方式,不太灵活。这里以建立属性表的方式来配置VS。这个根据你当前须要生成的程序,往“属性管理器”里项目下对应子项里添加属性表,并配置属性表相关项目,便可成功编译PCL。
注意:VS默认只生成32位的程序,若是须要生成64的程序,方法以下:VS界面有个运行项,后面有个debug,在后面有个叫“解决方案平台”的下拉框,其值默认为win32,须要把win32,改为x64,方法是,点win32的箭头,点“配置管理器”,点“活动解决方案平台”,点“新建”,把“键入或选择新平台”,这一项,切换为x64,而后肯定,此时,原来的win32已变为x64。这时编译生成的程序就是64位版本的。
添加属性表的话,找到“属性管理器”,而后点击项目的小箭头,若是是32的程序,会出来如下两项:Debug|Win32以及Release|Win32,而若是是64位的程序,则会多出两项:Debug|x64以及Release|x64。选中其中一项,右键点击“添加新项目属性表”,在弹出的对话框里设置好对应的属性表名和路径。确认以后,在该项中就会多出一项以刚才属性表名为名称的属性表。
在新建的属性表里,有三个必须设置的重要项目:附加包含目录,附加库目录,附加依赖项。
只有理解里上面这三项的做用,才能学到如何去解决配置中产生的一些问题。
在配置完属性表后,还须要配置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)
你们根据本身的安装路径,灵活变通。
5 开发
完成上述步骤后,就能够把代码拷贝到新创建的项目的cpp文件中去,而后编译,运行。测试一下是否运行成功。测试代码以下。
#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
int user_data;
void
viewerOneOff (pcl::visualization::PCLVisualizer& viewer)
{
viewer.setBackgroundColor (1.0, 0.5, 1.0);
pcl::PointXYZ o;
o.x = 1.0;
o.y = 0;
o.z = 0;
viewer.addSphere (o, 0.25, "sphere", 0);
std::cout << "i only run once" << std::endl;
}
void
viewerPsycho (pcl::visualization::PCLVisualizer& viewer)
{
static unsigned count = 0;
std::stringstream ss;
ss << "Once per viewer loop: " << count++;
viewer.removeShape ("text", 0);
viewer.addText (ss.str(), 200, 300, "text", 0);
//FIXME: possible race condition here:
user_data++;
}
int
main ()
{
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("my_point_cloud.pcd", *cloud);
pcl::visualization::CloudViewer viewer("Cloud Viewer");
//blocks until the cloud is actually rendered
viewer.showCloud(cloud);
//use the following functions to get access to the underlying more advanced/powerful
//PCLVisualizer
//This will only get called once
viewer.runOnVisualizationThreadOnce (viewerOneOff);
//This will get called once per visualization iteration
viewer.runOnVisualizationThread (viewerPsycho);
while (!viewer.wasStopped ())
{
//you can also do cool processing here
//FIXME: Note that this is running in a separate thread from viewerPsycho
//and you should guard against race conditions yourself...
user_data++;
}
return 0;
}
6 常见问题
配置PCL的过程是比较复杂的,须要根据本身的状况灵活调整。下面就配置过程当中可能会遇到的典型问题,给出其解决方案。
这个问题是由于在设置include,即设置附加包含目录,路径不对或缺乏致使的,根据提示,找到对应错误的库的头文件路径,更该便可。
这个问题和上一个问题很像,是附加库目录中,路径不对或缺乏致使的,根据提示,修改对应的路径便可。
注意:若是设置了,仍是提示找不到头文件或lib,这时就要查看一下PCL的安装路径下有没有这个头文件或lib,若是有,说明你的路径设置的仍是有问题,若是搜索不到这个头文件,那就要修改代码,多是版本缘由致使这个头文件没了,若是搜索不到lib文件,那么把这个lib从附加依赖项里删除。
这个问题比较难解决,总结起来有四大缘由:
第一个找对安装包便可,第二个修改项目位数和PCL库的位数一致便可,第三个要根据经验去添加上lib文件,第四个的话,在预处理器里添加PCL_NO_PRECOMPILE便可,固然上面只是经验之谈,要根据实际状况作出调整。
2.
error C4996: ‘std::_Uninitialized_copy0’: Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ ‘Checked Iterators’ d:\program files\microsoft visual studio 12.0\vc\include\xmemory 348 1 test2
参考:http://blog.csdn.net/lanchunhui/article/details/50900367
右键工程名,进入工程属性页,依次选中:
编辑【预处理定义】,如错误提示所说,添加,_SCL_SECURE_NO_WARNINGS: