Вопрос

Я пытаюсь связать мое приложение C ++ на библиотеке «EIGEN 2.0.15». Некоторые детали:

  • Мой компилятор: GCC версия 4.0.1 (Apple Inc. Build 5493)
  • Моя ОС: Mac OS 10.5
  • Я составляю код с G ++ -I / OPT / LOCAL / ILLECTS -I / OPT / LOCAL / включить / 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`

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top