我已经成功链接了我的基本项目,其中只包含一个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).
我感谢任何建议
答案 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”。 希望它会有所帮助!