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
Error Describtion Hello So I'm trying to define a custom pcl point type, as follows:
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 forKdTree
to work with a custom point type?Here is the error that I got: