GTSAM和EIGEN的版本对应问题

错误:

/usr/local/include/gtsam/base/Vector.h:72:1: error: static assertion failed: Error: GTSAM was built against a different version of Eigen

首先:

原因可能是GTSAM自带的eigen和系统安装的eigen之间有冲突。GTSAM编译的时候默认使用了自带的eigen,而系统中如果还手动安装过一个eigen的话,就会出现两个eigen的冲突

在GTSAM的CMakeLists.txt文件中的判断使用哪个EIGEN指令前边添加如下代码:

set(GTSAM_USE_SYSTEM_EIGEN ON)

这样就相当于GTSAM编译也使用了系统eigen。

然后删除build,并重新创建build进行编译。果然再次编译的时候出现了下面信息:

当GTSAM编译安装好后,再次编译出错的代码,就可以解决以上问题。

如果还是提示该错误那么:

可能是因为用了ROS的catkin_make,ROS找到的Eigen版本与gtsam找到的版本不一致造成的,那么解决问题的办法就是使它们一致,即需要使/usr/local/include、/usr/include 这两个文件夹下的eigen版本一致

posted @ 2020-12-21 11:12  空洞骑士  阅读(3135)  评论(0)    收藏  举报