PointCloudLibrary / pcl

Point Cloud Library (PCL)

Home Page:https://pointclouds.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Linker error] "Resolving Linker Errors when Using Custom Point Type with PCL's KdTree"

babahadjsaid opened this issue · comments

Error Describtion
Hello
So I'm trying to define a custom pcl point type, as follows:

{
    float smoothness;
    float time;
    uint16_t index;
};


POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
                                   (float, x, x)(float, y, y)(float, z, z)(float, intensity, intensity)
                                           (uint16_t, index, index)(float, time, time)(float, smoothness, smoothness)
)

In my code, I'm using pcl::KdTreeFLANN<PointType> with the custom point type that I created. The compilation part is okay, but there is a problem in the linking process. Can you tell me if I should add anything in the CMakeLists.txt file in order for KdTree to work with a custom point type?

Here is the error that I got:

In file included from /usr/include/x86_64-linux-gnu/sys/mman.h:25,
                 from /usr/include/pcl-1.12/pcl/io/low_level_io.h:62,
                 from /usr/include/pcl-1.12/pcl/io/impl/pcd_io.hpp:50,
                 from /usr/include/pcl-1.12/pcl/io/pcd_io.h:789,
                 from /media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:31,
                 from /media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/src/imageProjection.cpp:1:
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
In file included from /usr/include/x86_64-linux-gnu/sys/mman.h:25,
                 from /usr/include/pcl-1.12/pcl/io/low_level_io.h:62,
                 from /usr/include/pcl-1.12/pcl/io/impl/pcd_io.hpp:50,
                 from /usr/include/pcl-1.12/pcl/io/pcd_io.h:789,
                 from /media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:31,
                 from /media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/src/featureExtraction.cpp:1:
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
In file included from /usr/include/x86_64-linux-gnu/sys/mman.h:25,
                 from /usr/include/pcl-1.12/pcl/io/low_level_io.h:62,
                 from /usr/include/pcl-1.12/pcl/io/impl/pcd_io.hpp:50,
                 from /usr/include/pcl-1.12/pcl/io/pcd_io.h:789,
                 from /media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:31,
                 from /media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/src/mapOptmization.cpp:1:
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
In file included from /usr/include/x86_64-linux-gnu/sys/mman.h:25,
                 from /usr/include/pcl-1.12/pcl/io/low_level_io.h:62,
                 from /usr/include/pcl-1.12/pcl/io/impl/pcd_io.hpp:50,
                 from /usr/include/pcl-1.12/pcl/io/pcd_io.h:789,
                 from /media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:31,
                 from /media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/src/imuPreintegration.cpp:1:
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/media/baba/Data/internships/LS2N/intern/SourceCode/src/src/LIO-SAM/include/lio_sam/utility.hpp:73:36: warning: ‘offsetof’ within non-standard-layout type ‘PointType’ is conditionally-supported [-Winvalid-offsetof]
   73 | POINT_CLOUD_REGISTER_POINT_STRUCT (PointType,
      |                                    ^
/usr/bin/ld: warning: libtbb.so.2, needed by /usr/lib/x86_64-linux-gnu/libopencv_core.so.4.5.4d, may conflict with libtbb.so.12
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o: in function `pcl::search::KdTree<PointType, pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> > >::setSortedResults(bool)':
mapOptmization.cpp:(.text._ZN3pcl6search6KdTreeI9PointTypeNS_11KdTreeFLANNIS2_N5flann9L2_SimpleIfEEEEE16setSortedResultsEb[_ZN3pcl6search6KdTreeI9PointTypeNS_11KdTreeFLANNIS2_N5flann9L2_SimpleIfEEEEE16setSortedResultsEb]+0x11): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::setSortedResults(bool)'
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o: in function `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::~KdTreeFLANN()':
mapOptmization.cpp:(.text._ZN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEED2Ev[_ZN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEED5Ev]+0x1c): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::cleanup()'
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o: in function `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::~KdTreeFLANN()':
mapOptmization.cpp:(.text._ZN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEED0Ev[_ZN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEED5Ev]+0x1a): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::cleanup()'
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o: in function `std::_Sp_counted_ptr<pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose()':
mapOptmization.cpp:(.text._ZNSt15_Sp_counted_ptrIPN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEEELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv[_ZNSt15_Sp_counted_ptrIPN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEEELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv]+0x3a): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::cleanup()'
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o: in function `mapOptimization::allocateMemory()':
mapOptmization.cpp:(.text._ZN15mapOptimization14allocateMemoryEv[_ZN15mapOptimization14allocateMemoryEv]+0x1e6): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::KdTreeFLANN(bool)'
/usr/bin/ld: mapOptmization.cpp:(.text._ZN15mapOptimization14allocateMemoryEv[_ZN15mapOptimization14allocateMemoryEv]+0x246): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::KdTreeFLANN(bool)'
/usr/bin/ld: mapOptmization.cpp:(.text._ZN15mapOptimization14allocateMemoryEv[_ZN15mapOptimization14allocateMemoryEv]+0x884): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::KdTreeFLANN(bool)'
/usr/bin/ld: mapOptmization.cpp:(.text._ZN15mapOptimization14allocateMemoryEv[_ZN15mapOptimization14allocateMemoryEv]+0x8dd): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::KdTreeFLANN(bool)'
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o: in function `pcl::search::KdTree<PointType, pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> > >::KdTree(bool)':
mapOptmization.cpp:(.text._ZN3pcl6search6KdTreeI9PointTypeNS_11KdTreeFLANNIS2_N5flann9L2_SimpleIfEEEEEC2Eb[_ZN3pcl6search6KdTreeI9PointTypeNS_11KdTreeFLANNIS2_N5flann9L2_SimpleIfEEEEEC5Eb]+0xd3): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::KdTreeFLANN(bool)'
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o:mapOptmization.cpp:(.text._ZN15mapOptimization16publishLocallMapEv[_ZN15mapOptimization16publishLocallMapEv]+0x8f): more undefined references to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::KdTreeFLANN(bool)' follow
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o:(.data.rel.ro._ZTVN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEEE[_ZTVN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEEE]+0x10): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::setInputCloud(std::shared_ptr<pcl::PointCloud<PointType> const> const&, std::shared_ptr<std::vector<int, std::allocator<int> > const> const&)'
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o:(.data.rel.ro._ZTVN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEEE[_ZTVN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEEE]+0x28): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::nearestKSearch(PointType const&, unsigned int, std::vector<int, std::allocator<int> >&, std::vector<float, std::allocator<float> >&) const'
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o:(.data.rel.ro._ZTVN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEEE[_ZTVN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEEE]+0x40): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::radiusSearch(PointType const&, double, std::vector<int, std::allocator<int> >&, std::vector<float, std::allocator<float> >&, unsigned int) const'
/usr/bin/ld: CMakeFiles/lio_sam_mapOptimization.dir/src/mapOptmization.cpp.o:(.data.rel.ro._ZTVN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEEE[_ZTVN3pcl11KdTreeFLANNI9PointTypeN5flann9L2_SimpleIfEEEE]+0x58): undefined reference to `pcl::KdTreeFLANN<PointType, flann::L2_Simple<float> >::setEpsilon(float)'
collect2: error: ld returned 1 exit status