已调用PCL库基本项目返回中止

时间:2014-01-04 16:02:33

标签: c++ visual-studio-2010 point-cloud-library point-clouds

我已经成功链接了我的基本项目,其中只包含一个ReadPc.cpp文件,显然是从Visual Studio 2010中的文件中读取点云 抛出运行异常并弹出窗口“R6010 abort()已被调用”显示 当我设置我的应用程序时,我跟着this tutorial

这是我的代码

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>

int
main (int argc, char** argv)
{
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
  std::cout << "bejzikl";
  if (pcl::io::loadPCDFile<pcl::PointXYZ> ("kitchen.pcd", *cloud) == -1) //* load the file
  {
    PCL_ERROR ("Couldn't read file test_pcd.pcd \n");
    return (-1);
  }
  std::cout << "Loaded "
            << cloud->width * cloud->height
            << " data points from test_pcd.pcd with the following fields: "
            << std::endl;
  for (size_t i = 0; i < cloud->points.size (); ++i)
    std::cout << "    " << cloud->points[i].x
              << " "    << cloud->points[i].y
              << " "    << cloud->points[i].z << std::endl;

  return (0);
}

问题线似乎是这个  if(pcl :: io :: loadPCDFile(“kitchen.pcd”,* cloud)== -1)

在调试模式下输出

First-chance exception at 0x7566812f in Meshes.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0030f36c..
Unhandled exception at 0x7566812f in Meshes.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0030f36c..
The program '[15424] Meshes.exe: Native' has exited with code -529697949 (0xe06d7363).

我感谢任何建议

3 个答案:

答案 0 :(得分:2)

在我的情况下,这是由于依赖项的配置和项目配置的不同。通过将配置更改为Release模式解决,因为我的项目依赖项处于发布模式。

答案 1 :(得分:0)

我没有PCL库的经验但是std :: bad_alloc意味着新的失败了。 “当运算符new和operator new []的标准定义未能分配所请求的存储空间时抛出的异常类型。” 来源:cplusplus

也许您正在加载的文件太大,或者如果该加载请求继续内存,则表示您没有它。

此外,您可以尝试捕获异常并查看ex.what()对异常原因的建议。

答案 2 :(得分:0)

如果你正在使用PCL网站或github教程中的“kitchen.pcd”,那么你应该知道这个文件的点是类型的。 你可以在wordpad中打开“.pcd”文件并确保这一点。 如果是这样,请将“PointXYZ”类型更改为“PointXYZRGB”。 希望它会有所帮助!