Window7下手动编译最新版的PCL库

时间:2023-12-20 10:48:38

PCL简介

PCL是Point Cloud Library的缩写,是一个用于处理二维图像,三维深度图像和三维点云的C++库。该库是完全开源的,可免费用于商业和学术研究。
官方网站:http://pointclouds.org/

PCL的用途:

Window7下手动编译最新版的PCL库

下面对最新版的PCL库进行 编译。

环境:windows7 32bit

VS2010

cmake2.8

TortoiseSVN 1.8

1.安装第三方依赖库

官网上已经给出了一些安装包。下载地址:http://pointclouds.org/downloads/windows.html

记住下好对应系统的安装包。

Eigen无法正常下载,需要去官网下载:http://eigen.tuxfamily.org/index.php?title=Main_Page

我下载的实3.1.3的版本,下载zip包,直接解压到C:\Program Files\,把文件夹名字改成eigen。

其他的三方库直接双击安装就可以了。

2.用cmake构建项目

创建

C:\Program Files\PCL

C:\Program Files\PCL\trunk

然后用TortoiseSVN把pcl的源码down下来,svn地址是: http://svn.pointclouds.org/pcl/trunk

Window7下手动编译最新版的PCL库

打开cmake,开始构建。

将trunk文件夹下的CMakeLists.txt托到cmake里,先Configure,选择Visual Studio 10,然后Generate。

正常的话应该是这样:

Window7下手动编译最新版的PCL库

有问题的话根据报错信息进行修改,大部分是第三方依赖库没有装好。

双击PCL.sln导入工程到VS2010,编译,发现全是error - -

boost库很多东西都没找到.

在网上搜了很久,发现问题是CMakeLists没写好.1.50版本的Boost库没办法识别.

最快的解决方法:卸载BOOST1.50,去http://ftp.jaist.ac.jp/pub//sourceforge/p/po/pointclouds/dependencies/ 下载Boost-1.49.0-vs2010-x86.exe安装后重复上面的步骤,生成的项目就正确了。

Build一下ALL_BUILD, 然后去打个盹,回来发现报错:

Error 18326 error C2664: 'std::_Tree_const_iterator<_Mytree>::_Tree_const_iterator(const std::_Tree_const_iterator<_Mytree> &)' : cannot convert parameter 1 from 'std::_Tree_const_iterator<_Mytree>' to 'const std::_Tree_const_iterator<_Mytree> &' D:\VS2010\VC\include\utility 163

坑爹 的~

继续搜索解决方法....

修改一个位置: trunk/recognition/src/ransac_based/obj_rec_ransac.cpp

540:pair<set<ordered_int_pair>::iterator, bool> res = ordered_hypotheses_ids.insert (id_pair);

->540: pair<set<ordered_int_pair, bool(*)(const ordered_int_pair&, const ordered_int_pair&)>::iterator, bool> res = ordered_hypotheses_ids.insert (id_pair);

再次重新cmake->导入工程->build ALL_Build

Window7下手动编译最新版的PCL库

注意debug和realse版本都要编译一遍,而且要全部编译通过.

然后再把INSALL编译一下,debug和realse版本都要编译一遍.

Window7下手动编译最新版的PCL库

完全编译完成之后,C:\Program Files\PCL\lib中就有生成了编译好的lib库了 .

Window7下手动编译最新版的PCL库

当然还可以自己去编译 一下它给的一些test,不过需要自己编译GTest库.

这样,PCL就 算编译好了.