无法解析的外部符号,point-cloud-library"/>

首页 > 解决方案 > pcl::NormalEstimation无法解析的外部符号

问题描述

我使用正常估计的不同配置,但有些失败:

pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne;          // work
pcl::NormalEstimation<pcl::PointXYZRGB, pcl::Normal> ne;       // work
pcl::NormalEstimation<pcl::PointXYZRGBNormal, pcl::Normal> ne; // not work

错误 LNK2001:无法解析的外部符号“受保护:虚拟 void __cdecl pcl::NormalEstimation<struct pcl::PointXYZRGBNormal,struct pcl::Normal>::computeFeature(class pcl::PointCloud &)”(?computeFeature@?$NormalEstimation@UPointXYZRGBNormal @pcl@@UNormal@2@@pcl@@MEAAXAEAV ? $PointCloud@UNormal@pcl@@@2@@Z)

标签: point-cloud-library

解决方案


PCL API 基于模板。最常见的用例默认实例化(通常在.cpp文件中完成,例如:normal_3d.cpp

pcl::NormalEstimation<pcl::PointXYZRGBNormal, pcl::Normal>在编译您正在使用的 PCL 二进制文件期间未实例化,因此您需要自己进行:

#include <pcl/point_types.h>
#include <pcl/impl/instantiate.hpp>  // defines the PCL_INSTANTIATE_PRODUCT macro
#include <pcl/features/normal_3d.h>
#include <pcl/features/impl/normal_3d.hpp> // make sure to include the .hpp file

PCL_INSTANTIATE_PRODUCT(NormalEstimation, ((pcl::PointXYZRGBNormal))((pcl::Normal)))

pcl::NormalEstimation<pcl::PointXYZRGBNormal, pcl::Normal> ne;

推荐阅读