2017-04-18 66 views
0

我试图编译Eigen3 PartialPivLU example征PartialPivLU例​​如不会编译

MatrixXd A(2,2);
A < < 2,-1,1,3;
部分封闭>> lu(A);

但我得到编译器错误(见下文)。

如果我删除“参考<>它编译OK。有谁知道如何使用PartialPivLU与参考<>?

感谢 史蒂夫

In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/LU:23:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:2, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h: In instantiation of 'class Eigen::PartialPivLU<Eigen::Ref<Eigen::Matrix<double, -1, -1> > >': 
test3.cc:9:36: required from here 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:52:10: error: 'Options' is not a member of 'Eigen::PartialPivLU<Eigen::Ref<Eigen::Matrix<double, -1, -1> > >::MatrixType {aka Eigen::Ref<Eigen::Matrix<double, -1, -1> >}' 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h: In instantiation of 'Eigen::PartialPivLU<MatrixType>::PartialPivLU(const MatrixType&) [with _MatrixType = Eigen::Ref<Eigen::Matrix<double, -1, -1> >; Eigen::PartialPivLU<MatrixType>::MatrixType = Eigen::Ref<Eigen::Matrix<double, -1, -1> >]': 
test3.cc:9:36: required from here 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:213:26: error: no matching function for call to 'Eigen::Ref<Eigen::Matrix<double, -1, -1> >::Ref(Eigen::MapBase<Eigen::Ref<Eigen::Matrix<double, -1, -1> >, 0>::Index, Eigen::MapBase<Eigen::Ref<Eigen::Matrix<double, -1, -1> >, 0>::Index)' 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:213:26: note: candidates are: 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/Core:308:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:1, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:211:12: note: template<class Derived> Eigen::Ref::Ref(const Eigen::DenseBase<OtherDerived>&, typename Eigen::internal::enable_if<(bool)(typename Eigen::internal::traits<Eigen::Ref<_PlainObjectType, _Options, _StrideType> >::match<Derived>::MatchAtCompileTime), Derived>::type*) 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:211:12: note: template argument deduction/substitution failed: 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/LU:23:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:2, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:213:26: note: mismatched types 'const Eigen::DenseBase<Derived>' and 'Eigen::MapBase<Eigen::Ref<Eigen::Matrix<double, -1, -1> >, 0>::Index {aka long int}' 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/Core:308:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:1, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:204:12: note: template<class Derived> Eigen::Ref::Ref(Eigen::PlainObjectBase<OtherDerived>&, typename Eigen::internal::enable_if<(bool)(typename Eigen::internal::traits<Eigen::Ref<_PlainObjectType, _Options, _StrideType> >::match<Derived>::MatchAtCompileTime), Derived>::type*) 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:204:12: note: template argument deduction/substitution failed: 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/LU:23:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:2, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:213:26: note: mismatched types 'Eigen::PlainObjectBase<OtherDerived>' and 'Eigen::MapBase<Eigen::Ref<Eigen::Matrix<double, -1, -1> >, 0>::Index {aka long int}' 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/Core:308:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:1, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:194:12: note: template<class Derived> Eigen::Ref::Ref(const Eigen::PlainObjectBase<OtherDerived>&, typename Eigen::internal::enable_if<(bool)(typename Eigen::internal::traits<Eigen::Ref<_PlainObjectType, _Options, _StrideType> >::match<Derived>::MatchAtCompileTime), Derived>::type*) 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:194:12: note: template argument deduction/substitution failed: 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/LU:23:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:2, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/LU/PartialPivLU.h:213:26: note: mismatched types 'const Eigen::PlainObjectBase<OtherDerived>' and 'Eigen::MapBase<Eigen::Ref<Eigen::Matrix<double, -1, -1> >, 0>::Index {aka long int}' 
In file included from /apps/eigen/3.2.8/include/eigen3/Eigen/Core:308:0, 
       from /apps/eigen/3.2.8/include/eigen3/Eigen/Dense:1, 
       from test3.cc:2: 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:188:76: note: Eigen::Ref<Eigen::Matrix<double, -1, -1> >::Ref(const Eigen::Ref<Eigen::Matrix<double, -1, -1> >&) 
/apps/eigen/3.2.8/include/eigen3/Eigen/src/Core/Ref.h:188:76: note: candidate expects 1 argument, 2 provided 
+0

如果你阅读了你链接到的文件,你会发现这个功能只能从Eigen 3.3开始使用,你的错误日志表明你正在使用Eigen 3.2 0.8 – chtz

回答

0

由于chtz指出,问题是你需要使用Eigen 3.3或更高版本