对 pcl::PCLBase<MyPointType>::initCompute() 的未定义引用

问题描述 投票:0回答:1

我的C++项目使用了PCL库中的UniformSampling。它编译并运行良好。 然后我将相同的代码片段复制到同一项目中的另一个 cpp 文件中。 错误出现

/usr/bin/ld: /media/user/docker/ramloc_ws_rel/devel/.private/radar_odometry/lib/libradar_mapping.so: undefined reference to `pcl::PCLBase<MyPointType>::initCompute()'
/usr/bin/ld: /media/user/docker/ramloc_ws_rel/devel/.private/radar_odometry/lib/libradar_mapping.so: undefined reference to `pcl::PCLBase<MyPointType>::PCLBase()'
/usr/bin/ld: /media/user/docker/ramloc_ws_rel/devel/.private/radar_odometry/lib/libradar_mapping.so: undefined reference to `pcl::PCLBase<MyPointType>::deinitCompute()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/mapping_node.dir/build.make:521: /media/user/docker/ramloc_ws_rel/devel/.private/radar_odometry/lib/radar_odometry/mapping_node] Error 1

我已检查mapping_node 和libradar_mapping.so 是否与CMakeLists.txt 中的PCL_LIBRARIES 链接。我还在 cpp 文件中添加了“#define PCL_NO_PRECOMPILE”。相同的代码之前在项目中运行过。 可能出了什么问题?

linker-errors pcl
1个回答
0
投票

经过一番修改,我发现如果在包含任何标头之前将“#define PCL_NO_PRECOMPILE”放置在 cpp 文件的顶部,链接器错误就会消失。

© www.soinside.com 2019 - 2024. All rights reserved.