点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 3970|回复: 2

PCL_ONLY_CORE_POINT_TYPES编译选项

[复制链接]
发表于 2015-6-16 15:06:55 | 显示全部楼层 |阅读模式
本帖最后由 guohaolys 于 2015-6-16 15:20 编辑

PCL_ONLY_CORE_POINT_TYPES选项会影响编译是支持的点的类型,如果设置为真,那就只支持核心的部分点云类型,就节省了编译时间,具体支持的类型看每个类的.cpp文件。不勾选,则会对方法支持的所有类型都进行编译。
所以在勾选了PCL_ONLY_CORE_POINT_TYPES时,有时会出现连接错误,即使你添加了正确的lib库。

理论上是这样,但是我查看cmake生成的pcl config.h文件里虽然没有定义这个PCL_ONLY_CORE_POINT_TYPES。。但vs的编译器却显示为真,大家有谁遇到过,指引下。我暂时为省事,就手动更改我缺少的那个几个类型,重新编译连接库即可解决。但比较麻烦。
回复

使用道具 举报

 楼主| 发表于 2015-6-16 20:51:52 | 显示全部楼层
原来个定义,是通过最顶层的CMakeLists文件中,如图,对于MSVC来说从命令行添加一个预定义,可以通过打开工程属性下的PreprocessorDefinitions看到,有PCL_ONLY_CORE_POINT_TYPES。添加这个预定义是为了防止在msvc上库的上限问题https://github.com/PointCloudLibrary/pcl/issues/833
。有了这个预定义,其实很少编译很多内容,这也就造成了很多初级用户出现链接错误的原因。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册加入PCL中国点云技术相关产学研社区

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-16 20:56:11 | 显示全部楼层
guohaolys 发表于 2015-6-16 20:51
原来个定义,是通过最顶层的CMakeLists文件中,如图,对于MSVC来说从命令行添加一个预定义,可以通过打开工 ...

对于出现这种链接错误的,有两种解决方案,一种就是我在第一个帖子提到的,重新编译链接更新链接的库。最简单的方式,就是将对应的hpp文件包含进来,也就是类似在编译PCL时,对选项 PCL_NO_PRECOMPILE进行了开启。
回复 支持 反对

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-4-20 02:31 , Processed in 4.876231 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表