我试图在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语句没有被执行。注意,我实际上根本没有主要调用myFunction()。唯一的错误消息是
Segmentation fault (core dumped)当我在ExtractIndices中注释掉myFunction行时,问题就消失了,代码运行得很好:
// ExtractIndices<PointXYZ> rangefilter;我正在用ROS在Ubuntu上运行这个程序,并使用catkin_make编译它,如果这有帮助的话。
我真的很感激你帮我调试这个问题,因为我已经被困在这个问题上一段时间了。感谢您的阅读!
发布于 2015-04-09 02:34:55
多亏了评论者的帮助,我才找到了这个问题。我对gdb进行了回溯,并在googled中搜索了输出:
boost::math::lanczos::lanczos_initializer<boost::math::lanczos::lanczos17m64, long double>::init::init()然后发现了这个:http://answers.ros.org/question/194699/segmentation-fault-when-using-correspondencerejectorsampleconsensus/
这说明您不能在PCL中使用C++11,所以我从我的CMakeLists.txt文件中删除了这一行:
set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS}")而且起作用了!
https://stackoverflow.com/questions/29526266
复制相似问题