我正在尝试在C++中运行以下命令:
#include <pcl_ros/point_cloud.h>
#include "pcl/pcl_base.h"
#include "pcl/PointIndices.h"
#include "pcl/conversions.h"
#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/filters/extract_indices.h>
#include <pcl/filters/voxel_grid.h>
using namespace std;
using namespace pcl;
void myFunction() {
...
ExtractIndices<PointXYZ> rangefilter;
...
}
int main() {
cout << "Hello" << endl;
}
代码可以编译,但是运行时我会遇到分段错误。 cout语句未执行。注意,我实际上甚至没有在main中调用myFunction()。唯一的错误消息是
Segmentation fault (core dumped)
当我注释掉myFunction中的ExtractIndices行时,问题消失了,代码运行正常:
// ExtractIndices<PointXYZ> rangefilter;
我在ROS上的Ubuntu上运行它,并使用catkin_make进行编译,如果有帮助的话。
我非常感谢您提供的调试帮助,因为我在这个问题上已经停留了一段时间。谢谢阅读!
最佳答案
多亏了评论者的帮助,我才能够找到问题所在。我对gdb做了回溯,并用Google搜索了输出:
boost::math::lanczos::lanczos_initializer<boost::math::lanczos::lanczos17m64, long double>::init::init()
然后找到这个:http://answers.ros.org/question/194699/segmentation-fault-when-using-correspondencerejectorsampleconsensus/
这说明您不能将C++ 11与PCL一起使用,因此我从CMakeLists.txt文件中删除了这一行:
set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS}")
而且有效!
关于c++ - 使用pcl::ExtractIndices(pcl,ROS,catkin)在main之前进行段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29526266/