我试图在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进行编译,如果有帮助的话。
我真的很感激一些帮助调试这个,因为我一直坚持这个问题。谢谢你的阅读!
答案 0 :(得分:2)
感谢评论者的帮助,我找到了问题。我用gdb进行了回溯并用google搜索输出:
boost::math::lanczos::lanczos_initializer<boost::math::lanczos::lanczos17m64, long double>::init::init()
其中说你不能将C ++ 11与PCL一起使用,所以我从我的CMakeLists.txt文件中删除了这一行:
set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS}")
它有效!