点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 13931|回复: 10

PCL 在windows 下的配置(不需要Cmake)

[复制链接]
发表于 2014-5-21 11:59:29 | 显示全部楼层 |阅读模式
一、采用集成编译环境VS2010(不需要使用Cmake)
1、下载所需要的安装软件:首先安装:visual studio 2010;
然后下载安装:PCL-1.6.0-AllInOne-msvc2010-win32,下载地址:http://pointclouds.org/downloads/windows.html
再下载pcl-1.6.0-pdb-msvc2010-win32文件(地址同上),解压并将文件夹内所有文件复制粘贴到上一步安装好的PCL目录下的bin子文件夹(如              C:\ProgramFiles\PCL 1.6.0\bin)。
至此,PCL开发环境已经在window下配置好。
2、如何在VS2010环境下测试PCL开发环境是否配置好在不使用Cmake的条件下如何使用VS2010测试PCL开发环境是否安装成功。
测试例子:project_inliers.cpp, 这个源程序可以在网址:http://pointclouds.org/documentation/tutorials/project_inliers.php处下载到。
(1) 首先打开VS2010,新建一个VC++项目(win32控制台应用程序)。
(2) 将得到的project_inliers.cpp源程序拷贝覆盖到上面新建的VC++项目中的project_inliers.cpp内,注意保留原始的#include "stdafx.h",保存。
(3) 配置工程属性:项目(p)-->project_inliers属性--->在新打开的属性窗口中进行多项配置,包括“VC++目录”下的配置,debug模式下“链接器”中的配置具体如下:
(3.1)VC++目录--->包含目录--->添加:
C:\Program Files\PCL 1.6.0\include\pcl-1.6;
C:\Program Files\PCL 1.6.0\3rdParty\Boost\include;
C:\Program Files\PCL 1.6.0\3rdParty\Eigen\include;
C:\Program Files\PCL 1.6.0\3rdParty\FLANN\include;
C:\Program Files\PCL 1.6.0\3rdParty\Qhull\include;
C:\Program Files\PCL 1.6.0\3rdParty\VTK\include\vtk-5.8;
C:\Program Files\OpenNI\Include;
当然,为了表示的简单,我们也可以在打开VS2010建立工程项目之前先定义环境变量来简化此处的表达:
计算机-->属性-->高级系统设置-->环境变量-->系统变量-->新建,变量名PCL_ROOT,变量值:C:\Program Files\PCL 1.6.0。那么此时上面的包含路径表示可以改成:
$(PCL_ROOT)\include\pcl-1.6;
$(PCL_ROOT)\3rdParty\Boost\include;
$(PCL_ROOT)\3rdParty\Eigen\include;
$(PCL_ROOT)\3rdParty\FLANN\include;
$(PCL_ROOT)\3rdParty\Qhull\include;
$(PCL_ROOT)\3rdParty\VTK\include\vtk-5.8;
C:\Program Files\OpenNI\Include;

(3.2)VC++目录--->库目录--->添加:
C:\Program Files\PCL 1.6.0\lib;
C:\Program Files\PCL 1.6.0\3rdParty\Boost\lib;
C:\Program Files\PCL 1.6.0\3rdParty\FLANN\lib;
C:\Program Files\PCL 1.6.0\3rdParty\Qhull\lib;
C:\Program Files\PCL 1.6.0\3rdParty\VTK\lib\vtk-5.8;
C:\Program Files\OpenNI\Lib;

(3.3)链接器-->输入-->附加依赖项,添加:
opengl32.lib
    pcl_kdtree_debug.lib
    pcl_io_debug.lib
    pcl_search_debug.lib
    pcl_segmentation_debug.lib
    pcl_apps_debug.lib
    pcl_features_debug.lib
    pcl_filters_debug.lib
    pcl_visualization_debug.lib
    pcl_common_debug.lib
    flann_cpp_s-gd.lib
    libboost_system-vc100-mt-gd-1_49.lib
    libboost_filesystem-vc100-mt-gd-1_49.lib
    libboost_thread-vc100-mt-gd-1_49.lib
    libboost_date_time-vc100-mt-gd-1_49.lib
    libboost_iostreams-vc100-mt-gd-1_49.lib
    vtkalglib-gd.lib
    vtkCharts-gd.lib
    vtkCommon-gd.lib
    vtkDICOMParser-gd.lib
    vtkexoIIc-gd.lib
    vtkexpat-gd.lib
    vtkFiltering-gd.lib
    vtkfreetype-gd.lib
    vtkftgl-gd.lib
    vtkGenericFiltering-gd.lib
    vtkGeovis-gd.lib
    vtkGraphics-gd.lib
    vtkhdf5-gd.lib
    vtkHybrid-gd.lib
    vtkImaging-gd.lib
    vtkInfovis-gd.lib
    vtkIO-gd.lib
    vtkjpeg-gd.lib
    vtklibxml2-gd.lib
    vtkmetaio-gd.lib
    vtkNetCDF-gd.lib
    vtkNetCDF_cxx-gd.lib
    vtkpng-gd.lib
    vtkproj4-gd.lib
    vtkRendering-gd.lib
    vtksqlite-gd.lib
    vtksys-gd.lib
    vtktiff-gd.lib
    vtkverdict-gd.lib
    vtkViews-gd.lib
    vtkVolumeRendering-gd.lib
    vtkWidgets-gd.lib
    vtkzlib-gd.lib

3、此时按理说是可以编译通过并运行了,为了使得输出结果不是一闪而过,可以添加一条include语句:#include<windows.h>,然后在main函数return(0)之前添加一个语句:system("pause");最终得到运行结果:



回复

使用道具 举报

发表于 2015-4-7 19:53:24 | 显示全部楼层
你好 ,我照着你的配置好之后,编译的时候出错:
Cannot open include file: 'Eigen/StdVector': No such file or directory   。请问一下,这是怎么啦?有方法解决吗?
回复 支持 反对

使用道具 举报

发表于 2015-4-7 21:33:20 | 显示全部楼层
直接粘贴路径的话,总是会变成中文字符下的链接,导致库链接不上,不知有没有遇到此问题
回复 支持 反对

使用道具 举报

发表于 2015-4-9 14:56:56 | 显示全部楼层
抬头纹 发表于 2015-4-7 19:53
你好 ,我照着你的配置好之后,编译的时候出错:
Cannot open include file: 'Eigen/StdVector': No such  ...

我遇到和你一样的问题,猜测一是Eigen缺一个lib文件,猜测二是没有路径到c:\program files\pcl\include\pcl-1.6\pcl\common\eigen.h
回复 支持 反对

使用道具 举报

发表于 2015-4-9 16:56:46 | 显示全部楼层
抬头纹 发表于 2015-4-7 19:53
你好 ,我照着你的配置好之后,编译的时候出错:
Cannot open include file: 'Eigen/StdVector': No such  ...

我的调好了!你的环境变量里面path只添加一个路径;c:\program files\pcl\bin;就行了  其他的关于pcl的或者OpenNI的都去掉!
回复 支持 反对

使用道具 举报

发表于 2015-4-9 18:06:48 | 显示全部楼层
试问下你这里面的像vtkverdict-gd.lib等VTK文件是必须要的么?
这VTK是什么作用呢?:o
回复 支持 反对

使用道具 举报

发表于 2015-4-27 10:20:52 | 显示全部楼层
你好,能发下你的环境变量配置吗
回复 支持 反对

使用道具 举报

发表于 2015-7-28 16:19:43 | 显示全部楼层
楼主,你好,按照你的配置后,我运行然后报下面的错误,帮忙看下这是怎么回事呢
NuGet package restore finished.
1>------ 已启动生成: 项目: pclTest004, 配置: Debug Win32 ------
1>  project_inliers.cpp
1>  Unknown compiler version - please run the configure tests and report the results
1>d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\point_traits.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\point_cloud.h(1021): warning C4521: “pcl::PointCloud<Eigen::MatrixXf>”: 指定了多个复制构造函数
1>d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1008): warning C4996: 'pcl::SHOT': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD
1>  d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1003): note: 参见“pcl::SHOT”的声明
1>d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1009): warning C4996: 'pcl::SHOT': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD
1>  d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1003): note: 参见“pcl::SHOT”的声明
1>d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1012): warning C4996: 'pcl::SHOT::rf': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD
1>  d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1005): note: 参见“pcl::SHOT::rf”的声明
1>d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1013): warning C4996: 'pcl::SHOT::descriptor': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD
1>  d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1004): note: 参见“pcl::SHOT::descriptor”的声明
1>d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1014): warning C4996: 'pcl::SHOT::descriptor': USE SHOT352 FOR SHAPE AND SHOT1344 FOR SHAPE+COLOR INSTEAD
1>  d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1004): note: 参见“pcl::SHOT::descriptor”的声明
1>  d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\impl\point_types.hpp(1004): note: 参见“pcl::SHOT::descriptor”的声明
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\format\alt_sstream_impl.hpp : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\xtime.hpp(23): error C2059: 语法错误:“常量”
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\xtime.hpp(31): error C2143: 语法错误: 缺少“;”(在“}”的前面)
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\xtime.hpp(46): error C2833: “operator system_time”不是可识别的运算符或类型
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\xtime.hpp(46): error C2059: 语法错误:“newline”
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\xtime.hpp(47): error C2334: “{”的前面有意外标记;跳过明显的函数体
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\xtime.hpp(73): error C3861: “get_system_time”: 找不到标识符
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\xtime.hpp(88): error C2059: 语法错误:“}”
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\xtime.hpp(88): error C2143: 语法错误: 缺少“;”(在“}”的前面)
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\basic_timed_mutex.hpp(22): error C2143: 语法错误: 缺少“;”(在“{”的前面)
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\basic_timed_mutex.hpp(22): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(19): error C2039: “basic_timed_mutex”: 不是“boost::detail”的成员
1>  d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(17): note: 参见“boost::detail”的声明
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(19): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(19): error C2146: 语法错误: 缺少“;”(在标识符“underlying_mutex”的前面)
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(24): error C2039: “underlying_mutex”: 不是“boost::detail”的成员
1>  d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(17): note: 参见“boost::detail”的声明
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(24): error C2504: “underlying_mutex”: 未定义基类
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(31): error C3861: “initialize”: 找不到标识符
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(35): error C3861: “destroy”: 找不到标识符
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(46): error C2516: “boost::detail::basic_timed_mutex”: 是非法基类
1>  d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(19): note: 参见“boost::detail::basic_timed_mutex”的声明
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(53): error C3861: “initialize”: 找不到标识符
1>d:\pcl\pcl 1.6.0\3rdparty\boost\include\boost\thread\win32\mutex.hpp(58): error C3861: “destroy”: 找不到标识符
1>d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\point_cloud.h(603): warning C4521: “pcl::PointCloud<PointT>”: 指定了多个复制构造函数
1>          with
1>          [
1>              PointT=pcl::PointXYZ
1>          ]
1>  d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\sample_consensus\sac_model.h(69): note: 参见对正在编译的类 模板 实例化“pcl::PointCloud<PointT>”的引用
1>          with
1>          [
1>              PointT=pcl::PointXYZ
1>          ]
1>  d:\pcl\pcl 1.6.0\include\pcl-1.6\pcl\filters\project_inliers.h(180): note: 参见对正在编译的类 模板 实例化“pcl::SampleConsensusModel<pcl::PointXYZ>”的引用
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
回复 支持 反对

使用道具 举报

发表于 2016-5-6 17:14:02 | 显示全部楼层
bobyyoung 发表于 2015-7-28 16:19
楼主,你好,按照你的配置后,我运行然后报下面的错误,帮忙看下这是怎么回事呢
NuGet package restore fi ...

不要使用#include<windows.h> 和system("pause");
改用#include<conio.h>
和std::cout<<"请按任意键继续..."<<std::endl;
  getch();
回复 支持 反对

使用道具 举报

发表于 2016-6-2 16:43:39 | 显示全部楼层
bobyyoung 发表于 2015-7-28 16:19
楼主,你好,按照你的配置后,我运行然后报下面的错误,帮忙看下这是怎么回事呢
NuGet package restore fi ...

我也遇到了您一样的问题,请问你是怎么解决的?
回复 支持 反对

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-5-11 14:27 , Processed in 2.008666 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表