pcl 无法解析的外部符号

error LNK2001:“无法解析的外部符号"protected: virtual void __cdecl pcl::ProjectInliers::applyFilter(class pcl::PointCloud &)" (?applyFilter@?$ProjectInliers@UPointXYZ@pcl@@@pcl@@MEAAXAEAV?$PointCloud@UPointXYZ@pcl@@@2@@Z)

error LNK2001: 无法解析的外部符号 "private: virtual bool __cdecl pcl::ProjectInliers::initSACModel(int)" (?initSACModel@?$ProjectInliers@UPointXYZ@pcl@@@pcl@@EEAA_NH@Z)

error LNK2019: "void __cdecl pcl::console::print(enum pcl::console::VERBOSITY_LEVEL,char const *,...)" (?print@console@pcl@@YAXW4VERBOSITY_LEVEL@12@PEBDZZ),?该?符?号?在ú函ˉ数簓 "int `protected: bool __cdecl pcl::PCLBase::initCompute(void)'::`1'::catch$0" (?catch$0@?0??initCompute@?$PCLBase@UPointXYZ@pcl@@@pcl@@IEAA_NXZ@4HA) 中D被?引皔用?

2>E:\VS\project\project_inliers\bin\Debug\project_inliers.exe : fatal error LNK1120: 3 个无法解析的外部符号命ü令?

错误 16 error LNK2019: 无法解析的外部符号 "void __cdecl pcl::console::print(enum pcl::console::VERBOSITY_LEVEL,char const *,...)" (?print@console@pcl@@YAXW4VERBOSITY_LEVEL@12@PEBDZZ),该符号在函数 "int `protected: bool __cdecl pcl::PCLBase::initCompute(void)'::`1'::catch$0" (?catch$0@?0??initCompute@?$PCLBase@UPointXYZ@pcl@@@pcl@@IEAA_NXZ@4HA) 中被引用 D:\opencv\PCL\Cmak-bin\project_inliers.obj

 

错误 16:这一类错误的本质应该都是缺少lib 文件,只要找到并合理的添加就可以了。我开始用的是cmake直接生成的工程,各种lib已经配置好了,而且cmake生成也并没有报错。但是后来我注意到自己的pcl,cmake本来是32位的,但是当我自动生成工程时却只能用x64的进行运行调试,我猜测可能自己的软件安装有误,百度了一下,发现原来cmake生成的文件是与电脑的系统位数是一致的,我的电脑的64的,所以它自动生成适合64位的文件工程,所以有些lib即使已经加进去了,但是还是无法使用。所以我重装了PCL,换成了64位以后,就可以用了。

总结了一下,遇到这种问题主要原因有:

(1)缺少lib文件,如果用cmake自动生成工程也要注意,可能也会添加一些第三方lib。

(2)可能你的pcl的属性与本电脑的属性不同。比如:如果pcl是32位的,电脑是64位的,用cmake生成,由于cmake生成的工程属性与自身电脑的属性是一致的,在这里cmake生成的工程是64位的。所以可能无法使用pcl中的一些lib文件。

注:(1)(2)两点是自己在安装过程中的确遇到过的问题,也是这样解决的。在解决这样的问题之后,你会发现你纠结几天的问题其实都是一些特别简单的问题,容易忽略的问题。第(3)点也遇到了,只是在网上找到了相关的解决方案。已附网址。

(3)可能.h文件没有对应的hpp来实现

(参考:http://bbs.csdn.net/topics/390608666  )

(4)忠告:安装软件最好注意自己的软件安装的位数。最好与电脑的属性一致,以免造成不必要的错误。

你可能感兴趣的:(PCL点云)