Использование собственной библиотеки в Netbeans

Я использую библиотеку Eigen на C ++. Согласно документации Eigen:

Чтобы использовать Eigen, вам просто нужно загрузить и извлечь исходный код Eigen (инструкции по загрузке см. В вики). Фактически, файлы заголовков в подкаталоге Eigen - единственные файлы, необходимые для компиляции программ с использованием Eigen. Заголовочные файлы одинаковы для всех платформ. Необязательно использовать CMake или ничего устанавливать.

Итак, в Netbeans я добавил каталог Eigen в «включаемые каталоги». Затем я использовал простую программу, как показано ниже (которая представлена ​​в документации Eigen):

#include <iostream>
#include <Eigen/Dense>

using namespace std;
using namespace Eigen;

int main()
{
   Matrix3f A;
   Vector3f b;
   A << 1,2,3,  4,5,6,  7,8,10;
   b << 3, 3, 4;
   cout << "Here is the matrix A:\n" << A << endl;
   cout << "Here is the vector b:\n" << b << endl;
   Vector3f x = A.colPivHouseholderQr().solve(b);
   cout << "The solution is:\n" << x << endl;
}

Netbeans рисует красную линию для метода colPivHouseholderQr () !! Кроме того, я не вижу метод colPivHouseholderQr () в методах, которые могут быть вызваны для объекта A.

Удивительно, но все работает нормально, программа компилируется и работает правильно, хотя у меня есть красное подчеркивание для colPivHouseholderQr () !!

Что может быть не так с моими настройками ??

введите описание изображения здесь


person ManiAm    schedule 05.04.2012    source источник


Ответы (3)


Это проблема, о которой сообщалось в Netbeans при использовании Eigen.

Он не может разрешить многие идентификаторы объектов, включая функции-члены шаблонных объектов, таких как ваша функция colPivHouseholderQr().

Лучшим решением, к которому я пришел, было использование вместо этого Eclipse.

person ʀᴏʙ    schedule 14.08.2012

Проблема в том, что colPivHouseholderQr() находится в модуле QR, но вы включаете только модуль Dense.

Попробуйте добавить следующее:

#include <Eigen/QR>

См .: http://eigen.tuxfamily.org/api/group_QR _Module.html

person Kyle Lutz    schedule 05.04.2012
comment
Спасибо за ответ, но если вы проверите файл Eigen / Dense, вы увидите, что там #include ‹QR›, и нет необходимости повторно включать его снова. - person ManiAm; 05.04.2012

Извините, это скорее комментарий, но я не могу оставлять комментарии, но вы пытались удалить кеш? Не знаю об окнах, но в Ubuntu обычно это ~ / .netbeans / 7.0 (или что-то еще) / var / cache - просто удалите все в каталоге кеша. Иногда у меня это срабатывает.

person ds1848    schedule 05.04.2012
comment
Я проверил это, но папка с кешем моего Netbeans была пуста. - person ManiAm; 05.04.2012