Question

J'essaie de lier mon application C ++ avec la bibliothèque "Eigen 2.0.15". Quelques détails:

  • Mon compilateur est: gcc version 4.0.1 (Apple Inc. build 5493)
  • Mon OS est: mac os 10.5
  • Je compile le code avec 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

L'erreur est:

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

Est-ce que quelqu'un a une idée pourquoi l'éditeur de liens échoue?

Était-ce utile?

La solution

En regardant les messages d'erreur, je suppose que vous n'instancier Matrix, Transform et éventuellement d'autres modèles. Cela est arrivé sans doute parce que les fichiers d'en-tête ne contenaient pas mise en œuvre de ces modèles, ou peut-être il y a une compilation conditionnelle qui est censé tirer vers le haut la mise en œuvre pour eux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top