Проблемы с библиотекой Eigen и компоновщиком c ++ - PullRequest
4 голосов
/ 10 декабря 2010

Я пытаюсь связать свое приложение c ++ с библиотекой "Eigen 2.0.15".Некоторые детали:

  • Мой компилятор: gcc версии 4.0.1 (Apple Inc., сборка 5493)
  • Моя ОС: mac os 10.5
  • Я компилирую код с помощью g ++ -I / opt / local / include -I / opt / local / include / eigen2 -O2 -g ...

    Building target: LBRALL Invoking: MacOS X C++ Linker g++ -L/opt/local/lib -o "LBRALL" [... *.o -files ] -lcv -lEigen2 -lcxcore -lhighgui

Ошибка:

`Undefined symbols:
"Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<float, 4, 4, 2, 4, 4>, 3, 3, 1, 32>    >::inverse() const", referenced from:
  Eigen::Transform<float, 3>::inverse(Eigen::TransformTraits) constin LBRSendStateCart.o
  Eigen::Transform<float, 3>::inverse(Eigen::TransformTraits) constin LBRCam.o
"Eigen::MatrixBase<Eigen::Matrix<float, 4, 4, 2, 4, 4> >::inverse() const", referenced from:
  Eigen::Transform<float, 3>::inverse(Eigen::TransformTraits) constin LBRSendStateCart.o
  Eigen::Transform<float, 3>::inverse(Eigen::TransformTraits) constin LBRCam.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [LBRALL] Error 1`

У кого-нибудь есть идея, почему не работает компоновщик?

1 Ответ

2 голосов
/ 10 декабря 2010

Глядя на сообщения об ошибках, я думаю, вы не создали экземпляры Matrix, Transform и, возможно, других шаблонов.Это произошло, вероятно, из-за того, что заголовочные файлы не содержали реализацию этих шаблонов или, возможно, существует условная компиляция, которая должна подтянуть реализацию для них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...