我尝试将我的C ++应用程序链接到“ EIGEN 2.0.15”库。一些细节:

  • 我的编译器是:GCC版本4.0.1(Apple Inc. Build 5493)
  • 我的操作系统是:Mac OS 10.5
  • 我将代码与g ++ -i/opt/local/include -i/opt/local/local/includs/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