安装链接:https://blog.csdn.net/llfjcmx/article/details/88831384
解决办法:https://www.cnblogs.com/didada/p/12305066.html
原因就是:由于BA优化在小于3.3.4版本的Eigen中可能失败,所以要求Eigen的版本不小于3.3.4。 接下来安装了Eigen3.37版本的。安装过程如上述链接,完成后再编译ceres就没问题了。 安装包安装Eigen 时,参考一下链接 https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/107302389
安装链接:https://blog.csdn.net/slzlincent/article/details/86555166
按照很多教程安装的ceres库版本,以及网上大多数教程安装的版本都会和eigen3(3.3.7)有冲突,编译时会报如下错误::
@Override /usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:16: error: ‘integer_sequence’ is not a member of ‘std’ struct SumImpl<std::integer_sequence<T, N, Ns...>> { ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:16: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:46: error: wrong number of template arguments (3, should be 1) struct SumImpl<std::integer_sequence<T, N, Ns...>> { ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’ struct SumImpl; ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:49: error: expected unqualified-id before ‘>’ token struct SumImpl<std::integer_sequence<T, N, Ns...>> { ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:70:16: error: ‘integer_sequence’ is not a member of ‘std’ struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> { ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:70:16: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:70:51: error: wrong number of template arguments (4, should be 1) struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> { ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’ struct SumImpl; ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:70:54: error: expected unqualified-id before ‘>’ token struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> { ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:77:16: error: ‘integer_sequence’ is not a member of ‘std’ struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> { ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:77:16: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:77:59: error: wrong number of template arguments (6, should be 1) struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> { ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template<class Seq> struct ceres::internal::SumImpl’ struct SumImpl; ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:77:62: error: expected unqualified-id before ‘>’ token struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> { ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:84:16: error: ‘integer_sequence’ is not a member of ‘std’ struct SumImpl<std::integer_sequence<T, N>> { ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:84:16: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:84:41: error: wrong number of template arguments (2, should be 1) struct SumImpl<std::integer_sequence<T, N>> {提示:ceres版本和eigen3.37存在冲突
卸载原来的ceres版本,安装ceres-solver-1.14.0版本 根据教程进行操作: https://blog.csdn.net/qq_41586768/article/details/107541917 ceres_curve_fiiting这个包没有找到在哪,没有安装,应该暂时也用不到。 经过上述操作后在编译整个工程就没啥问题了。