c++ - Eigen 库和 C++ 链接器的问题

标签 c++ macos gcc linker eigen

我尝试将我的 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++ 链接器 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 和可能的其他模板。发生这种情况可能是因为头文件不包含这些模板的实现,或者可能有一个条件编译应该为它们提取实现。

关于c++ - Eigen 库和 C++ 链接器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4410098/

相关文章:

c++ - if 语句和 else if 语句都执行

c++ - 比较 C/C++ 中的两个 bson_t

c - 有效地将 16 位 short 转换为 8 位 char

macos - 操作系统: Avoid userprompt when opening embedded binary

python - Pip 和 Python 在模块位置上存在分歧

c++ - 如何使用 make 链接 c++ 中不同目录中的对象而不在 makefile 中引用它们?

c - 了解警告 "comparison of promoted ~unsigned with unsigned"

c++ - 尽管传递了一个右值,为什么我的 move 构造函数没有被调用?

c++ - 如何在 net-snmp 中打印整数和 Counter32 值

objective-c - 如何理解这个崩溃日志