特征库和c链接器的问题

我尝试将我的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 / include / eigen2 -O2 -g编译代码…

建筑目标:LBRALL
调用: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`

有人知道链接器失败的原因吗?

最佳答案 查看错误消息,我猜你没有实例化Matrix,Transform和其他模板.发生这种情况可能是因为头文件不包含这些模板的实现,或者可能存在应该为它们提取实现的条件编译.

点赞