如何构建PCL项目

问题描述:

我一直试图在PCL网站上运行一个点云库示例(http://pointclouds.org/documentation/tutorials/using_pcl_pcl_config.php#using-pcl-pcl-config),并且仍然无法运行!如何构建PCL项目

这就是我所做的:我已经在我的电脑中安装了MSVS 2010(64位)的Point Cloud library PCL 1.6.0多功能安装程序,然后安装了一些我发现我需要的库( Boost和Eigen)。之后,我添加了MS Visual Studio 2010(PLC,boost和eigen)中所需的所有依赖项和库,并且仍然会出现这些令人讨厌的错误:

(我也尝试过使用CMake GUI for windows,但它错误LNK2019:无法解析的外部符号“无效__cdecl PCL ::控制台::打印(PCL枚举::控制台:: VERBOSITY_LEVEL,字符常量生成项目)

1> PCL.obj时报告了很多错误的*:...)“(?print @ console @ pcl @@ YAXW4VERBOSITY_LEVEL @ 12 @ PBDZZ)在函数_main中引用

1> PCL.obj:错误LNK2001:无法解析的外部符号”public:virtual int __thiscall pcl: :P CDReader :: readHeader(类的std :: basic_string的,类的std ::分配器>常量&,结构sensor_msgs :: PointCloud2 &,类征::矩阵&,类征::四元数&,整数&,整数&,无符号整型& ,int)“(?readHeader @ PCDReader @ pcl @@ UAEHABV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ AAUPointCloud2 @ sensor_msgs @@ AAV?$ Matrix @ M $ 03 $ 00 $ 0A @ $ 03 $ 00 @ Eigen @@ AAV?$ Quaternion @ M $ 0A @@ 8 @ AAH4AAIH @ Z)

1> PCL.obj:error LNK2001:无法解析的外部符号“public:virtual int __thiscall pcl :: PCDReader :: read(class std :: basic_string,class std :: allocator> const &,struct sensor_msgs :: PointCloud2 &,class Eigen :: Matrix &,class Eigen :: Quaternion &,int &,int)“(?read @ PCDReader @ pcl @@ UAEHABV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ STD @@ AAUPointCloud2 @ sensor_msgs @@ AAV?$基质@ M $ 03 $ $ 00 0A @ $ 03 $ 00 @艾根@@ AAV?$ @四元数M $ 0A @@ 8 @啊哈@ Z)

任何,任何帮助将非常感激。这东西让我如此多的时间,让我发疯。

谢谢!!

+0

为什么你安装了Boost和Eigen,因为一体化安装程序已经包含了它们? – Sassa 2013-05-10 14:33:44

+0

在那个尝试中,我刚刚安装了PCL(没有第三方的东西),然后我安装了示例代码所需的库。我也尝试安装完整的PCL +第三方软件包,仍然收到相同的错误.... – Nicolai 2013-05-10 15:23:34

你有一个链接器错误,所以你缺少一个lib文件或者你没有链接它们。或者你正在混合32位和64位配置和库。

您是否完成了我在this answer中描述的所有步骤?

我建议使用all-in-one安装程序,除非您真的知道PCL需要第三方库的方式和原因。

+0

谢谢!我错过了在链接器中添加额外的依赖关系。但是,最简单的pcd_write.cpp正在运行,但由于VTK未解决的符号故障,pcl_visualizer_demo.cpp失败。我在VC++目录中添加了include和库目录的路径。我必须在Linker-Input-Additional Dependencies中添加每个.lib VTK文件吗?在VTK库文件夹中有100个.lib文件! – Nicolai 2013-05-27 10:15:57

+0

不,从技术上说,你只需要添加你正在使用的那些 - 有人说,有时很难找出你需要哪些,所以更容易添加所有这些:) (你可以排除显然不需要的例如与数据库(sql,mapreduce)或图像格式(tiff/jpeg/dicom)相关的并添加所有其余的) – Oszkar 2013-06-02 19:49:33