如何修复此 Eigen 矩阵求逆溢出错误?

How to fix this Eigen matrix inversion overflow error?

#include "Eigen/Core"
#include <iostream>

using namespace std;
using namespace Eigen;

int main() {

    Matrix <float, 2, 2 > J;
    J << 0.0f, -1.0f, 1.0f, 0.0f;

    Matrix <float, 2, 2 > I;
    I << 1.0f, 0.0f, 0.0f, 1.0f;

    Matrix <float, 2, 2 > A;
    A = 20.0f * I + 30.0f * J;

    Matrix <float, 2, 2 > B;

    B = 10.0f * I + 25.0f * J;

    Matrix <float, 2, 2 > C;
    C = B;
    cout << C.inverse() << endl;

    return 0;
}

它给出了一个我无法修复的错误。我不知道这里的 "unsolved externals" 是什么意思,如果是溢出错误如何解决??

如果您查看 documentation of MatrixBase::inverse,您会发现它要求您包含 Eigen/LU。 Godbolt 演示:https://godbolt.org/z/ydfALn

如果你只包含 Eigen/Core,你只会得到 inverse 的 forward-declaration,编译器会假设它会在别处实现并且链接器会失败,因为它不能'找不到符号。

包括 Eigen/Dense 也可以,因为它包括 i.a。 Eigen/LU header.