2017-01-20 13 views
0

Я пытаюсь использовать библиотеку pcl в проекте Qt. Я включил следующие заголовочные файлы, которые дают мне ошибки:'Index' в пространстве имен '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 является ЬурейиМ объявлено внутри класса LDLT или LLT: вы должны решить, какой из них вы хотите использовать! Обратите внимание, что Index объявлен также в классе EigenSolver и в других классах; снова, решите, какой из них вы хотите использовать.
  2. solve является метод данного класса (LDLT, ЛЛТ)

Вы можете использовать два подхода:

using namespace Something; 

где Something = LDLT или Something = LLT или

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

Заменить LDLT<Eigen::MatrixXd> с все, что у вас есть.

Относительно 2., вы должны вызвать метод решения, как следующее:

LDLT<MatrixXd> chol = whatever; 
....... 
....... 
result = chol.solve(stuff); 

 Смежные вопросы

  • Нет связанных вопросов^_^