Wheb Build pcl с Visual Studio 2010 Я получаю point_types.hpp (1185): error C2146: syntax error: missing ';' перед идентификатором "черты"

Я использую библиотеку PCL с vs 2010. Я не использую CMake и включаю все dll, библиотеки и папки include.

Я написал простую программу для заполнения облака полушария в экземпляре PointCloud. Вот мой супер простой код:

#include <iostream>
#include <pcl\point_cloud.h>
#include <pcl\impl\point_types.hpp>
#include <cmath>

using namespace pcl;
void AddPointsToCloud(PointCloud<PointXYZRGB>& cloud);

int main ()
{
   PointCloud<PointXYZRGB> cloud;

   AddPointsToCloud(cloud);
   return 0;
}




void AddPointsToCloud(PointCloud<PointXYZRGB>& cloud)
{
    double R =2;
    int nTheta = 20; //number of grid points
    double dTheata =  0.5*M_PI / (nTheta - 1);

    int nPhi = 20;
    double dPhi =  2 * M_PI / (nPhi - 1);

    for (int i = 0 ; i < nTheta ; i++ )
    {
       for (int j = 0 ; j < nPhi ; j++)
       {
          double x = R * sin(i*dTheata) * cos(j* dPhi );
          double y = R * sin(i*dTheata) * sin(j* dPhi );
          double z = R * cos(i*dTheata);

          PointXYZRGB p;
          p.x = x;
          p.y = y;
          p.z = z;

          p.r = static_cast<uint8_t>(255 * x / R);
          p.g = static_cast<uint8_t>(255 *  y / R);
          p.b = static_cast<uint8_t>(255 * z / R);


          cloud.push_back(p);
      }
   }
 }

Теперь, когда я создаю в Visual Studio 2010, я получаю следующие ошибки:

Ошибка 2, ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'traits' c: \ program files (x86) \ pcl 1.6.0 \ include \ pcl-1.6 \ pcl \ impl \ point_types.hpp 1185

Ошибка 3 ошибка C4430: отсутствует спецификатор типа - предполагается int. Примечание: C ++ не поддерживает default-int c: \ program files (x86) \ pcl 1.6.0 \ include \ pcl-1.6 \ pcl \ impl \ point_types.hpp 1185

Ошибка 4 ошибка C4430: отсутствует спецификатор типа - предполагается int. Примечание: C ++ не поддерживает default-int c: \ program files (x86) \ pcl 1.6.0 \ include \ pcl-1.6 \ pcl \ impl \ point_types.hpp 1185

Я не понимаю почему, у меня нет ошибок компиляции перед сборкой проекта, и все правильно в point_types.hpp (файл заголовка pcl)

пожалуйста, помогите мне

Заранее спасибо


person user1409534    schedule 07.10.2013    source источник


Ответы (1)


Мне удалось упростить ваш код, чтобы получить сообщение об ошибке. Приведенный ниже код вызывает ошибку моего компилятора (это GCC, но ошибка с тем же объявлением, что и ваше - черты):

Вы пытались еще больше упростить код?

#include <pcl/point_cloud.h>
#include <pcl/impl/point_types.hpp>
int main ()
{
   return 0;
}

Взгляните на примеры, которые используют point_types.hpp в PCL - нет ни одного, использующего его напрямую. Вместо этого ожидается, что перед его включением будут настроены некоторые другие вещи. См., Например: Добавление собственного настраиваемого типа PointT

Вместо этого последний пример кода содержит следующее:

#include <pcl/point_types.h>

point_cloud.hpp включается следующим образом в point_cloud.h (поэтому его не нужно включать в ваше приложение):

#include <pcl/impl/point_types.hpp>  // Include struct definitions
person D.J.Duff    schedule 07.10.2013
comment
Понятно. Я отбросил #include ‹pcl / impl / point_types.hpp›, и теперь он строится. Спасибо - person user1409534; 07.10.2013