2010-12-10 41 views
4

我嘗試將我的C++應用程序與「Eigen 2.0.15」庫進行鏈接。 一些細節:特徵庫和C++鏈接程序的問題

  • 我的編譯器:gcc版本4.0.1(蘋果公司建立5493)
  • 我的操作系統是:MAC OS 10.5
  • 我編譯克+ + -I/opt中碼/本地/包括-I /選擇/本地/包括/ EIGEN2 -02 -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

根據http://eigen.tuxfamily.org/index.php?title=Main_Page,「沒有鏈接到的庫... Eigen是在頭文件中定義的純模板庫。」 – 2010-12-10 15:30:31

回答

2

看着錯誤消息,我猜你沒有實例化Matrix,Transform和其他可能的模板。發生這種情況可能是因爲頭文件沒有包含這些模板的實現,或者是有一個條件編譯應該爲它們啓動實現。

+2

無法找到符號,因爲'MatrixBase :: inverse'methode是在Eigen :: LU'類中定義的。包含''修復了這個問題。 – nutario 2010-12-30 08:59:07