Gismo库杂谈——与Eigen的冲突(续)

在之前的文章中我们提到了通过引入一个取消保护宏的头文件可以解决gismo库与Eigen库冲突的问题

#include <gismo.h>
#include <gsUndefEigenGuards.h>
#include <Eigen/Dense>

但是在最近的测试中发现如果代码中引入了Eigen/SparseLU则仍会发生冲突

#include <gismo.h>
#include <gsUndefEigenGuards.h>
#include <Eigen/SparseLU>

通过分析发现问题出现在Eigen/src/SparseLU/SparseLUImpl.hEigen/src/SparseLU/SparseLU_Structs.h两个头文件中,这两个头文件的保护宏分别是SPARSELU_IMPL_HEIGEN_LU_STRUCTS,不符合Eigen_*_H的形式,于是未被之前的脚本命令检索到,所以我们只需在gsUndefEigenGuards.h文件中增加两行:

#undef SPARSELU_IMPL_H
#undef EIGEN_LU_STRUCTS

即可解决问题。