PCL中的bug修改

  PCL是比较出众的激光点云处理库,通常都是自己从源码编译而来,但是编译出的动态库在使用的过程在头文件中会报一些奇怪的错误,起初天真的以为不可能是源码的问题,是自己环境配置的问题,经孙师兄点拨,豁然明白头文件中有错误,错误的原因是部分函数与系统标准库重名,导致编译器解析(从右至左)出现错误,举例说明:

在使用kdTree和pcl_common这两个dll时在头文件:nn_index.h和result_set.h中会出现错误,如以下两句:

worst_dist_ = std::numeric_limits::max(); 
size_t n = std::min(dist_index_.size(), num_elements);
类似语句编译时都会出现这个error,解决方案是:把max、min等连同前面的作用域括起来,如下:
worst_dist_ = (std::numeric_limits::max)(); 
size_t n = (std::min)(dist_index_.size(), num_elements); 
 
此外,还有以下文件中的类似代码需要修改
hierarchical_clustering_index.h 
kmeans_index.h 
lsh_table.h 
kdtree_index.h 
autotuned_indes.h 
kdtree_single_index.h 
lsh_index.h 
result_set.h 
nn_index.h
原文地址:https://www.cnblogs.com/gisk/p/5402222.html