使用Eigen遇到恶心报错

参考博客:https://www.cnblogs.com/wongyi/p/8734346.html

 

1. 数据类型报错

/home/wy/workdir/slambook/ch3/useEigen/build> make -j2
Scanning dependencies of target eigenMatrix
[ 50%] Building CXX object CMakeFiles/eigenMatrix.dir/eigenMatrix.cpp.o
In file included from /usr/include/eigen3/Eigen/Core:348:0,
                 from /home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp:5:
/usr/include/eigen3/Eigen/src/Core/Product.h: In instantiation of ‘struct Eigen::internal::product_result_scalar<Eigen::Matrix<float, 2, 3>, Eigen::Matrix<double, 3, 1>, Eigen::DenseShape, Eigen::DenseShape>’:
/usr/include/eigen3/Eigen/src/Core/Product.h:78:73:   required from ‘struct Eigen::internal::traits<Eigen::Product<Eigen::Matrix<float, 2, 3>, Eigen::Matrix<double, 3, 1>, 0> >/usr/include/eigen3/Eigen/src/Core/Product.h:151:7:   required from ‘class Eigen::internal::dense_product_base<Eigen::Matrix<float, 2, 3>, Eigen::Matrix<double, 3, 1>, 0, 3>/usr/include/eigen3/Eigen/src/Core/Product.h:183:7:   required from ‘class Eigen::ProductImpl<Eigen::Matrix<float, 2, 3>, Eigen::Matrix<double, 3, 1>, 0, Eigen::Dense>/usr/include/eigen3/Eigen/src/Core/Product.h:107:7:   required from ‘class Eigen::Product<Eigen::Matrix<float, 2, 3>, Eigen::Matrix<double, 3, 1>, 0>/home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp:52:65:   required from here
/usr/include/eigen3/Eigen/src/Core/Product.h:41:98: error: no type named ‘ReturnType’ in ‘struct Eigen::internal::scalar_product_traits<float, double>’
   typedef typename scalar_product_traits<typename Lhs::Scalar, typename Rhs::Scalar>::ReturnType Scalar;
                                                                                                  ^
In file included from /usr/include/eigen3/Eigen/Core:344:0,
                 from /home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp:5:
/usr/include/eigen3/Eigen/src/Core/DenseBase.h: In instantiation of ‘class Eigen::DenseBase<Eigen::Product<Eigen::Matrix<float, 2, 3>, Eigen::Matrix<double, 3, 1>, 0> >’:
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Product<Eigen::Matrix<float, 2, 3>, Eigen::Matrix<double, 3, 1>, 0> >/usr/include/eigen3/Eigen/src/Core/Product.h:151:7:   required from ‘class Eigen::internal::dense_product_base<Eigen::Matrix<float, 2, 3>, Eigen::Matrix<double, 3, 1>, 0, 3>/usr/include/eigen3/Eigen/src/Core/Product.h:183:7:   required from ‘class Eigen::ProductImpl<Eigen::Matrix<float, 2, 3>, Eigen::Matrix<double, 3, 1>, 0, Eigen::Dense>/usr/include/eigen3/Eigen/src/Core/Product.h:107:7:   required from ‘class Eigen::Product<Eigen::Matrix<float, 2, 3>, Eigen::Matrix<double, 3, 1>, 0>/home/wy/workdir/slambook/ch3/useEigen/eigenMatrix.cpp:52:65:   required from here
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:78:25: error: using-declaration for non-member at class scope
     using Base::operator*;
                         ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:79:25: error: using-declaration for non-member at class scope
     using Base::operator/;
                         ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:80:17: error: using-declaration for non-member at class scope
     using Base::derived;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:81:17: error: using-declaration for non-member at class scope
     using Base::const_cast_derived;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:82:17: error: using-declaration for non-member at class scope
     using Base::rows;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:83:17: error: using-declaration for non-member at class scope
     using Base::cols;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:84:17: error: using-declaration for non-member at class scope
     using Base::size;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:85:17: error: using-declaration for non-member at class scope
     using Base::rowIndexByOuterInner;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:86:17: error: using-declaration for non-member at class scope
     using Base::colIndexByOuterInner;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:87:17: error: using-declaration for non-member at class scope
     using Base::coeff;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:88:17: error: using-declaration for non-member at class scope
     using Base::coeffByOuterInner;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:89:26: error: using-declaration for non-member at class scope
     using Base::operator();
                          ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:90:26: error: using-declaration for non-member at class scope
     using Base::operator[];
                          ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:91:17: error: using-declaration for non-member at class scope
     using Base::x;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:92:17: error: using-declaration for non-member at class scope
     using Base::y;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:93:17: error: using-declaration for non-member at class scope
     using Base::z;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:94:17: error: using-declaration for non-member at class scope
     using Base::w;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:95:17: error: using-declaration for non-member at class scope
     using Base::stride;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:96:17: error: using-declaration for non-member at class scope
     using Base::innerStride;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:97:17: error: using-declaration for non-member at class scope
     using Base::outerStride;
                 ^
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:98:17: error: using-decla
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
报错信息“THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE”是由Eigen库中的宏定义引起的。具体来说,这个错误是由于在使用Eigen库时,调用了一个只适用于特定大小的向量的方法,而不是矩阵的方法。这个错误通常是由于在代码中将矩阵错误地当作向量来使用引起的。 在报错信息中,我们可以看到引用\[1\]和引用\[2\]中的代码片段,它们都是关于Eigen库中的宏定义和错误检查的部分。这些宏定义用于在编译时检查向量和矩阵的大小,并在使用错误的方法时引发错误。 为了解决这个问题,我们需要检查代码中的向量和矩阵的使用方式。确保只在适用于向量的方法中使用向量,并在适用于矩阵的方法中使用矩阵。如果需要对矩阵进行向量操作,可以使用Eigen库提供的相应方法来实现。 总结起来,报错信息“THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE”是由于在使用Eigen库时错误地将矩阵当作向量来使用引起的。通过检查代码中的向量和矩阵的使用方式,并使用适当的方法来解决这个问题。 #### 引用[.reference_title] - *1* *2* [\src\core\plainobjectbase.h(311): error C2338: YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX](https://blog.csdn.net/fatecutter/article/details/124829596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Eigen库:常见错误(最坑的库,没有之一)](https://blog.csdn.net/Charles_ke/article/details/89067150)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值