1

Я успешно связал свой базовый проект, содержащий только один файл ReadPc.cpp, явно просматривающий облако точек из файла в Visual Studio 2010 После запуска исключение вызывается и открывается всплывающее окно «R6010 abort () был назван»показан Когда я настраивал мое заявление я с последующим this tutorialPCL библиотека базовый возврат проекта abort был вызван

Вот мой код

#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); 
} 

Проблема линия, кажется, это один если (ПКЛ :: 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

У меня нет опыта работы с библиотекой PCL, но станд :: bad_alloc, означает, что новый не удалось. «Тип исключений, выдаваемых стандартными определениями оператора new и operator new [], когда они не могут выделить требуемое место для хранения». источник: cplusplus

Возможно, файл, который вы загружаете, слишком велик, или если эта загрузка запрашивает продолжение памяти, у вас ее нет.

Также вы можете попытаться поймать исключение и посмотреть, что ex.what() предложит об исключении.

0

Если вы используете «kitchen.pcd» из учебников сайта PCL или github, то вы должны знать, что точки этого файла имеют тип. вы можете открыть файл «.pcd» в текстовом поле и убедиться в этом. Если это так, измените типы «PointXYZ» на «PointXYZRGB». Надеюсь, это было бы полезно!

+1

Тип не может быть проблемой, потому что PCL внутренне заботится об этом. поэтому, например, если вы ожидаете тип PointXYZRGB, и вы получаете PointXYZ, то нет проблем. PCL просто игнорирует поля, которые он не получил, и просто дает предупреждение. – NKN

2

В моем случае это связано с различием в конфигурации зависимостей и конфигурации проекта. Решено, изменив конфигурацию на режим выпуска, так как мои зависимости проекта находятся в режиме деблокирования.

Смежные вопросы