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