2017-01-20 185 views
0

我想在一个Qt项目中使用pcl库。我包括下面的头文件,它给我的错误:命名空间'Eigen''索引'没有命名一个类型

#include "pcl/common/common_headers.h" 
#include "pcl/io/io.h" 

的错误发生在本征的头文件(LDLT.h,LLT.h):

'Index' in namespace 'Eigen' does not name a type 
'Solve' in namespace 'Eigen' does not name a type 

我确实看到指数的定义LDLT.h和LLT.h文件。我不知道为什么给我这些错误。

+0

您正在使用什么版本的本征的? ('std :: cout << EIGEN_WORLD_VERSION <<'。'<< EIGEN_MAJOR_VERSION <<'。'<< EIGEN_MINOR_VERSION <<'\ n';') – chtz

+0

@chtz版本为3.3 –

+0

Eigen 3.3.0(及更高版本)肯定有这些类型。您的Eigen安装被破坏,或者其他问题被破坏。你能提供一个MVCE吗? – chtz

回答

0

也许你没有用正确的方式给他们打电话......我不能说没有任何代码,我会尝试猜测!
要明确:

  1. Index是类活体肝移植或LLT内声明一个typedef:你应该决定要使用哪一个!请注意0​​也在类EigenSolver和其他类中声明;再次,决定你想使用哪一个。
  2. solve是给定类的方法(活体肝移植,LLT)

您可以使用两种方法:

using namespace Something; 

其中Something = LDLTSomething = LLT

Eigen::LDLT<Eigen::MatrixXd>::Index your_stuff_with_index = whatever; 

替换LDLT<Eigen::MatrixXd>与无论你有什么。

关于2,你应该调用解决方法如下所示:

LDLT<MatrixXd> chol = whatever; 
....... 
....... 
result = chol.solve(stuff); 
相关问题