您的位置:首页 > 其它

VS 2013+Pcl 1.7.2 安装配置及常见问题

2017-02-28 20:53 736 查看
安装系统win10,64位,vs2013,pcl 1.7.2(64位)为例。

1.电脑/属性/环境变量+path(openNI根据需要进行添加)



新建PCL_ROOT:



2.vs2013配置

2.1 右键项目属性,点VC++目录,添加如下:

D:\pcl\PCL1.7.2\include\pcl-1.7
D:\pcl\PCL1.7.2\3rdParty\Boost\include\boost-1_57
D:\pcl\PCL1.7.2\3rdParty\Eigen\eigen3
D:\pcl\PCL1.7.2\3rdParty\FLANN\include
D:\pcl\PCL1.7.2\3rdParty\QHull\include
D:\pcl\PCL1.7.2\3rdParty\VTK\include\vtk-6.2


2.2 C/C++ 附加库目录,添加如下:

F:\PCL\PCL1.7.2\lib
F:\PCL\PCL1.7.2\3rdParty\Boost\lib
F:\PCL\PCL1.7.2\3rdParty\FLANN\lib
F:\PCL\PCL1.7.2\3rdParty\QHull\lib
F:\PCL\PCL1.7.2\3rdParty\VTK\lib


备注:
不同PCL 版本, lib include 目录可能不太一样,因此需要确认, .h .lib 的文件准确的位置;附加依赖项不能直接复制,需要确认自己lib(pcl1.7.2 我的vtk版本6.2)

2.3 点链接器,再点输入,找到附加依赖项,添加如下:

debug:
pcl_common_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_io_debug.lib
pcl_io_ply_debug.lib
pcl_kdtree_debug.lib
pcl_keypoints_debug.lib
pcl_octree_debug.lib
pcl_outofcore_debug.lib
pcl_people_debug.lib
pcl_recognition_debug.lib
pcl_registration_debug.lib
pcl_sample_consensus_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib
libboost_atomic-vc120-mt-gd-1_57.lib
libboost_chrono-vc120-mt-gd-1_57.lib
libboost_container-vc120-mt-gd-1_57.lib
libboost_context-vc120-mt-gd-1_57.lib
libboost_coroutine-vc120-mt-gd-1_57.lib
libboost_date_time-vc120-mt-gd-1_57.lib
libboost_exception-vc120-mt-gd-1_57.lib
libboost_filesystem-vc120-mt-gd-1_57.lib
libboost_graph-vc120-mt-gd-1_57.lib
libboost_iostreams-vc120-mt-gd-1_57.lib
libboost_locale-vc120-mt-gd-1_57.lib
libboost_log-vc120-mt-gd-1_57.lib
libboost_log_setup-vc120-mt-gd-1_57.lib
libboost_math_c99-vc120-mt-gd-1_57.lib
libboost_math_c99f-vc120-mt-gd-1_57.lib
libboost_math_c99l-vc120-mt-gd-1_57.lib
libboost_math_tr1-vc120-mt-gd-1_57.lib
libboost_math_tr1f-vc120-mt-gd-1_57.lib
libboost_math_tr1l-vc120-mt-gd-1_57.lib
libboost_mpi-vc120-mt-gd-1_57.lib
libboost_prg_exec_monitor-vc120-mt-gd-1_57.lib
libboost_program_options-vc120-mt-gd-1_57.lib
libboost_random-vc120-mt-gd-1_57.lib
libboost_regex-vc120-mt-gd-1_57.lib
libboost_serialization-vc120-mt-gd-1_57.lib
libboost_signals-vc120-mt-gd-1_57.lib
libboost_system-vc120-mt-gd-1_57.lib
libboost_test_exec_monitor-vc120-mt-gd-1_57.lib
libboost_thread-vc120-mt-gd-1_57.lib
libboost_timer-vc120-mt-gd-1_57.lib
libboost_unit_test_framework-vc120-mt-gd-1_57.lib
libboost_wave-vc120-mt-gd-1_57.lib
libboost_wserialization-vc120-mt-gd-1_57.lib
flann_cpp_s-gd.lib
qhullstatic_d.lib
vtkalglib-6.2-gd.lib
vtkChartsCore-6.2-gd.lib
vtkCommonCore-6.2-gd.lib
vtkCommonColor-6.2-gd.lib
vtkCommonComputationalGeometry-6.2-gd.lib
vtkCommonDataModel-6.2-gd.lib
vtkCommonExecutionModel-6.2-gd.lib
vtkCommonMath-6.2-gd.lib
vtkCommonMisc-6.2-gd.lib
vtkCommonSystem-6.2-gd.lib
vtkCommonTransforms-6.2-gd.lib
vtkDICOMParser-6.2-gd.lib
vtkDomainsChemistry-6.2-gd.lib
vtkexoIIc-6.2-gd.lib
vtkexpat-6.2-gd.lib
vtkFiltersAMR-6.2-gd.lib
vtkFiltersCore-6.2-gd.lib
vtkFiltersExtraction-6.2-gd.lib
vtkFiltersFlowPaths-6.2-gd.lib
vtkFiltersGeneral-6.2-gd.lib
vtkFiltersGeneric-6.2-gd.lib
vtkFiltersGeometry-6.2-gd.lib
vtkFiltersHybrid-6.2-gd.lib
vtkFiltersHyperTree-6.2-gd.lib
vtkFiltersImaging-6.2-gd.lib
vtkFiltersModeling-6.2-gd.lib
vtkFiltersParallel-6.2-gd.lib
vtkFiltersParallelImaging-6.2-gd.lib
vtkFiltersProgrammable-6.2-gd.lib
vtkFiltersSelection-6.2-gd.lib
vtkFiltersSMP-6.2-gd.lib
vtkFiltersSources-6.2-gd.lib
vtkFiltersStatistics-6.2-gd.lib
vtkFiltersTexture-6.2-gd.lib
vtkFiltersVerdict-6.2-gd.lib
vtkfreetype-6.2-gd.lib
vtkftgl-6.2-gd.lib
vtkGeovisCore-6.2-gd.lib
vtkgl2ps-6.2-gd.lib
vtkhdf5-6.2-gd.lib
vtkhdf5_hl-6.2-gd.lib
vtkImagingColor-6.2-gd.lib
vtkImagingCore-6.2-gd.lib
vtkImagingFourier-6.2-gd.lib
vtkImagingGeneral-6.2-gd.lib
vtkImagingHybrid-6.2-gd.lib
vtkImagingMath-6.2-gd.lib
vtkImagingMorphological-6.2-gd.lib
vtkImagingSources-6.2-gd.lib
vtkImagingStatistics-6.2-gd.lib
vtkImagingStencil-6.2-gd.lib
vtkInfovisCore-6.2-gd.lib
vtkInfovisLayout-6.2-gd.lib
vtkInteractionImage-6.2-gd.lib
vtkInteractionStyle-6.2-gd.lib
vtkInteractionWidgets-6.2-gd.lib
vtkIOAMR-6.2-gd.lib
vtkIOCore-6.2-gd.lib
vtkIOEnSight-6.2-gd.lib
vtkIOExodus-6.2-gd.lib
vtkIOExport-6.2-gd.lib
vtkIOGeometry-6.2-gd.lib
vtkIOImage-6.2-gd.lib
vtkIOImport-6.2-gd.lib
vtkIOInfovis-6.2-gd.lib
vtkIOLegacy-6.2-gd.lib
vtkIOLSDyna-6.2-gd.lib
vtkIOMINC-6.2-gd.lib
vtkIOMovie-6.2-gd.lib
vtkIONetCDF-6.2-gd.lib
vtkIOParallel-6.2-gd.lib
vtkIOParallelXML-6.2-gd.lib
vtkIOPLY-6.2-gd.lib
vtkIOSQL-6.2-gd.lib
vtkIOVideo-6.2-gd.lib
vtkIOXML-6.2-gd.lib
vtkIOXMLParser-6.2-gd.lib
vtkjpeg-6.2-gd.lib
vtkjsoncpp-6.2-gd.lib
vtklibxml2-6.2-gd.lib
vtkmetaio-6.2-gd.lib
vtkNetCDF-6.2-gd.lib
vtkNetCDF_cxx-6.2-gd.lib
vtkoggtheora-6.2-gd.lib
vtkParallelCore-6.2-gd.lib
vtkpng-6.2-gd.lib
vtkproj4-6.2-gd.lib
vtkRenderingAnnotation-6.2-gd.lib
vtkRenderingContext2D-6.2-gd.lib
vtkRenderingContextOpenGL-6.2-gd.lib
vtkRenderingCore-6.2-gd.lib
vtkRenderingFreeType-6.2-gd.lib
vtkRenderingFreeTypeOpenGL-6.2-gd.lib
vtkRenderingGL2PS-6.2-gd.lib
vtkRenderingImage-6.2-gd.lib
vtkRenderingLabel-6.2-gd.lib
vtkRenderingLIC-6.2-gd.lib
vtkRenderingLOD-6.2-gd.lib
vtkRenderingOpenGL-6.2-gd.lib
vtkRenderingVolume-6.2-gd.lib
vtkRenderingVolumeOpenGL-6.2-gd.lib
vtksqlite-6.2-gd.lib
vtksys-6.2-gd.lib
vtktiff-6.2-gd.lib
vtkverdict-6.2-gd.lib
vtkViewsContext2D-6.2-gd.lib
vtkViewsCore-6.2-gd.lib
vtkViewsInfovis-6.2-gd.lib
vtkzlib-6.2-gd.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib



















vs版本是2013的可以直接复制到附加依赖项里。注意vs2012,vs2015版的依赖库不一样,不能直接复制上面的,

把上面的的复制到记事本里,然后,查看pcl安装路径下boost库的lib文件夹,里面的lib名字里会带有vc***,

这个是编译器版本号,例如vs2013版的pcl是上面的vc***是vc120,然后利用记事本的替换功能,把vc120,替换

为上面你找到的编译器版本号vc***,再拷贝到附加依赖项里。

2.4 c/c++预处理器

_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS


3.常见错误

3.1 编译器内部发生错误

A.代码使用的版本和编译器不相符。我是直接用的别人写的程序,程序里面的语法和PCL版本不一致,改了版本之后这个错误没有了。
B.还有就是 debug win32 X64要选择正确。
C.我最后发现 文件名 右键 配置属性是我之前的的版本;而属性管理器加载的是我现在的版本,我加入了下面提示需要的lib,解决了。

3.1.2 头文件错误
boost :附加库目录里面boost路径没有添加正确
3.1.3 缺少xxxx.dll
在安装目录下搜索,如果该文件存在,则可能是因为路径配置错误,也可能是电脑环境path放置太靠下,往上移动

3.2 error LNK1104: 无法打开文件“libboost_atomic-vc120-mt-gd-1_61.lib”

我安装的是1.7.2 ;却找不到1.8.0里面的lib,是因为我之前配置的1.8.0。需要检查上面的库以及环境是否重新配置正确。

3.3

1.提示未找到pcl的头文件等,该问题是附加包含目录里库路径设置不正确导致的,修改或添加相关路径。

2.配置64位pcl出现无法解析的外部符号错误,该错误是解决方案平台未修改导致的,把win32换成x64。

3.有个别人添加了上述路径后发生,还是提示dll找不到的情况,有可能是你在path里少添加相关dll的路径了。还有一个原因是path有长度限制,超出长度的部分就不认了,

这时,可以把上面所有bin文件夹下的dll拷贝到‪C:WindowsSystem32文件夹里。

3.4 模块计算机类新x86与目标计算机类x64冲突

opencv 之前是32位编译的,而PCL是64位编译的,需要在 附加目录里面改变成 64位的lib;

然后删除之前 的 .sln文件,重新编译生成即可

3.5 配置一样但老是显示缺少 .h 各种

点开.h 文件看看,里面有的头文件路径写的<flann/flann.h>此时包含目录 D:\pcl\PCL1.7.2\3rdParty\FLANN\include

如果写的 <flann.h>此时包含目录D:\pcl\PCL1.7.2\3rdParty\FLANN\include\flann

4. 测试(txt转换成pcd,三维显示)

#include <pcl/io/pcd_io.h>
#include <pcl/features/integral_image_normal.h>
#include <boost/thread/thread.hpp>
#include <pcl/visualization/pcl_visualizer.h>
#include <fstream>
#include <pcl/visualization/cloud_viewer.h>
int
main(int argc, char** argv)
{
// 点云数据对象
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
// 法线对象
pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);
argv[1] = "test_pcd.pcd";
ifstream file("result2.txt");
float x, y, z;
int i = 0;
cloud->height = 1;
cloud->width = 30000;//点的个数
cloud->resize((cloud->width) *(cloud->height));
while (file){
file >> x >> y >> z;
cloud->points[i].x = x;
cloud->points[i].y = y;
cloud->points[i].z = z;
i++;
}
pcl::visualization::CloudViewer viewer("pcd viewer");
viewer.showCloud(cloud);
system("pause");

std::string filename("test.pcd");
pcl::PCDWriter writer;
writer.write(filename, *cloud);

}

5. 下载配置文件(和我的电脑系统一致,安装路径也一样,系统环境配置好)
http://download.csdn.net/detail/nameix/9910600
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: