PCL和Eigen冲突问题

问题描述

如果你在做SLAM相关的工作时利用到PCL和Eigen这两个库,并且在编译和运行时遇到了一些问题,可以参考下面的解决方案。

编译时出错

如果你编译时失败了,首先检查你CmakeLists中的设置,PCL高版本(1.8以上)需要C++14的标准,如果你使用了C++11标准,编译时会失败。

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")

运行时出错

如果你成功编译,但在运行时出现如下报错

rgbd_tum: /usr/include/eigen3/Eigen/src/Core/MapBase.h:198:void Eigen::MapBase<Derived, 0>::checkSanity(typename Eigen::internal::enable_if<(Eigen::internal::traits<OtherDerived>::Alignment > 0), void*>::type) const [with T = Eigen::Map<Eigen::Matrix<double, 2, 6, 0, 2, 6>, 32, Eigen::Stride<0, 0> >; Derived = Eigen::Map<Eigen::Matrix<double, 2, 6, 0, 2, 6>, 32, Eigen::Stride<0, 0> >; typename Eigen::internal::enable_if<(Eigen::internal::traits<OtherDerived>::Alignment > 0), void*>::type = void*]: 假设 ‘( ((internal::UIntPtr(m_data) % internal::traits<Derived>::Alignment) == 0) || (cols() * rows() * minInnerStride * sizeof(Scalar)) < internal::traits<Derived>::Alignment ) && "data is not aligned"’ 失败。
已放弃 (核心已转储)

问题在于编译使用了debug模式,设定为release模式即可。可以通过VSCode等设置,也可以在CmakeLists中使用

SET(CMAKE_BUILD_TYPE Release)

在编译完成时注意查看输出信息是否是

[cmake] -- BUILD TYPE:Release

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值