使用 pcl::ExtractIndices(pcl、ROS、catkin)的 main 之前的分段错误
Segmentation fault before main with pcl::ExtractIndices (pcl, ROS, catkin)
我正在尝试 运行 在 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 进行了回溯并搜索了输出:
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}")
成功了!
我正在尝试 运行 在 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 进行了回溯并搜索了输出:
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}")
成功了!