Domanda

cerco di collegare la mia applicazione C ++ contro la libreria "Eigen 2.0.15". Alcuni dettagli:

  • Il mio compilatore è: gcc la versione 4.0.1 (Apple Inc. di build 5493)
  • Il mio sistema operativo è: Mac OS 10.5
  • I compilare il codice 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

L'errore è:

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

Qualcuno ha un idea del perché il linker non riesce?

È stato utile?

Soluzione

Guardando i messaggi di errore, la mia ipotesi ha non istanziare Matrix, Transform e forse altri modelli. Questo è successo probabilmente perché i file di intestazione non contengono attuazione di tali modelli, o forse c'è una compilazione condizionale che dovrebbe tirare l'attuazione per loro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top