Pregunta

trato de vincular mi aplicación C ++ con la librería "Eigen 2.0.15". Algunos detalles:

  • Mi compilador es: gcc versión 4.0.1 (build 5493 Apple Inc.)
  • Mi sistema operativo es: Mac OS 10.5
  • Me compilar el código con 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

El error es:

`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`

¿Alguien tiene una idea de por qué falla el enlazador?

¿Fue útil?

Solución

En cuanto a los mensajes de error, yo creo que no crear una instancia de matriz, transformación y posiblemente otras plantillas. Eso ocurrió probablemente porque los archivos de cabecera no contenían aplicación de esas plantillas, o tal vez hay una compilación condicional que se supone que tire hacia arriba de aplicación para ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top