\src\core\plainobjectbase.h(311): error C2338: YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX

其实就是正常的操作函数错误。

还以为时很复杂的错误(因为我调用了matlab一堆函数,还以为跟Eigen库出什么冲突了…)

点开这个报错信息,进入plainobjectbase.h:

    EIGEN_DEVICE_FUNCinline void resize(Index size){EIGEN_STATIC_ASSERT_VECTOR_ONLY(PlainObjectBase)//报错定位在这里eigen_assert(((SizeAtCompileTime == Dynamic && (MaxSizeAtCompileTime==Dynamic || size<=MaxSizeAtCompileTime)) || SizeAtCompileTime == size) && size>=0);#ifdef EIGEN_INITIALIZE_COEFFSbool size_changed = size != this->size();#endifif(RowsAtCompileTime == 1)

ctrl + 双击EIGEN_STATIC_ASSERT_VECTOR_ONLY,定位到这里,注意看注释:

// static assertion failing if the type \a TYPE is not a vector type
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE) \EIGEN_STATIC_ASSERT(TYPE::IsVectorAtCompileTime, \YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX)

// static assertion failing if the type \a TYPE is not a vector type

就是对Eigen的一些Matrix误用了vector的操作。

升华一下:

在SraricAssert中记录了各类问题,以后就来这里找:

// This file is part of Eigen, a lightweight C++ template library
// for linear algebra.
//
// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
// Copyright (C) 2008 Benoit Jacob <jacob.benoit.1@gmail.com>
//
// This Source Code Form is subject to the terms of the Mozilla
// Public License v. 2.0. If a copy of the MPL was not distributed
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.#ifndef EIGEN_STATIC_ASSERT_H
#define EIGEN_STATIC_ASSERT_H/* Some notes on Eigen's static assertion mechanism:**  - in EIGEN_STATIC_ASSERT(CONDITION,MSG) the parameter CONDITION must be a compile time boolean*    expression, and MSG an enum listed in struct internal::static_assertion<true>**  - define EIGEN_NO_STATIC_ASSERT to disable them (and save compilation time)*    in that case, the static assertion is converted to the following runtime assert:*      eigen_assert(CONDITION && "MSG")**  - currently EIGEN_STATIC_ASSERT can only be used in function scope**/#ifndef EIGEN_STATIC_ASSERT
#ifndef EIGEN_NO_STATIC_ASSERT#if EIGEN_MAX_CPP_VER>=11 && (__has_feature(cxx_static_assert) || (defined(__cplusplus) && __cplusplus >= 201103L) || (EIGEN_COMP_MSVC >= 1600))// if native static_assert is enabled, let's use it#define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);#else // not CXX0Xnamespace Eigen {namespace internal {template<bool condition>struct static_assertion {};template<>struct static_assertion<true>{enum {YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX=1,YOU_MIXED_VECTORS_OF_DIFFERENT_SIZES=1,YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES=1,THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE=1,THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE=1,THIS_METHOD_IS_ONLY_FOR_OBJECTS_OF_A_SPECIFIC_SIZE=1,OUT_OF_RANGE_ACCESS=1,YOU_MADE_A_PROGRAMMING_MISTAKE=1,EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT=1,EIGEN_INTERNAL_COMPILATION_ERROR_OR_YOU_MADE_A_PROGRAMMING_MISTAKE=1,YOU_CALLED_A_FIXED_SIZE_METHOD_ON_A_DYNAMIC_SIZE_MATRIX_OR_VECTOR=1,YOU_CALLED_A_DYNAMIC_SIZE_METHOD_ON_A_FIXED_SIZE_MATRIX_OR_VECTOR=1,UNALIGNED_LOAD_AND_STORE_OPERATIONS_UNIMPLEMENTED_ON_ALTIVEC=1,THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES=1,FLOATING_POINT_ARGUMENT_PASSED__INTEGER_WAS_EXPECTED=1,NUMERIC_TYPE_MUST_BE_REAL=1,COEFFICIENT_WRITE_ACCESS_TO_SELFADJOINT_NOT_SUPPORTED=1,WRITING_TO_TRIANGULAR_PART_WITH_UNIT_DIAGONAL_IS_NOT_SUPPORTED=1,THIS_METHOD_IS_ONLY_FOR_FIXED_SIZE=1,INVALID_MATRIX_PRODUCT=1,INVALID_VECTOR_VECTOR_PRODUCT__IF_YOU_WANTED_A_DOT_OR_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTIONS=1,INVALID_MATRIX_PRODUCT__IF_YOU_WANTED_A_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTION=1,YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY=1,THIS_METHOD_IS_ONLY_FOR_COLUMN_MAJOR_MATRICES=1,THIS_METHOD_IS_ONLY_FOR_ROW_MAJOR_MATRICES=1,INVALID_MATRIX_TEMPLATE_PARAMETERS=1,INVALID_MATRIXBASE_TEMPLATE_PARAMETERS=1,BOTH_MATRICES_MUST_HAVE_THE_SAME_STORAGE_ORDER=1,THIS_METHOD_IS_ONLY_FOR_DIAGONAL_MATRIX=1,THE_MATRIX_OR_EXPRESSION_THAT_YOU_PASSED_DOES_NOT_HAVE_THE_EXPECTED_TYPE=1,THIS_METHOD_IS_ONLY_FOR_EXPRESSIONS_WITH_DIRECT_MEMORY_ACCESS_SUCH_AS_MAP_OR_PLAIN_MATRICES=1,YOU_ALREADY_SPECIFIED_THIS_STRIDE=1,INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION=1,THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD=1,PACKET_ACCESS_REQUIRES_TO_HAVE_INNER_STRIDE_FIXED_TO_1=1,THIS_METHOD_IS_ONLY_FOR_SPECIFIC_TRANSFORMATIONS=1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES=1,YOU_PERFORMED_AN_INVALID_TRANSFORMATION_CONVERSION=1,THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY=1,YOU_ARE_TRYING_TO_USE_AN_INDEX_BASED_ACCESSOR_ON_AN_EXPRESSION_THAT_DOES_NOT_SUPPORT_THAT=1,THIS_METHOD_IS_ONLY_FOR_1x1_EXPRESSIONS=1,THIS_METHOD_IS_ONLY_FOR_INNER_OR_LAZY_PRODUCTS=1,THIS_METHOD_IS_ONLY_FOR_EXPRESSIONS_OF_BOOL=1,THIS_METHOD_IS_ONLY_FOR_ARRAYS_NOT_MATRICES=1,YOU_PASSED_A_ROW_VECTOR_BUT_A_COLUMN_VECTOR_WAS_EXPECTED=1,YOU_PASSED_A_COLUMN_VECTOR_BUT_A_ROW_VECTOR_WAS_EXPECTED=1,THE_INDEX_TYPE_MUST_BE_A_SIGNED_TYPE=1,THE_STORAGE_ORDER_OF_BOTH_SIDES_MUST_MATCH=1,OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG=1,IMPLICIT_CONVERSION_TO_SCALAR_IS_FOR_INNER_PRODUCT_ONLY=1,STORAGE_LAYOUT_DOES_NOT_MATCH=1,EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT__INVALID_COST_VALUE=1,THIS_COEFFICIENT_ACCESSOR_TAKING_ONE_ACCESS_IS_ONLY_FOR_EXPRESSIONS_ALLOWING_LINEAR_ACCESS=1,MATRIX_FREE_CONJUGATE_GRADIENT_IS_COMPATIBLE_WITH_UPPER_UNION_LOWER_MODE_ONLY=1,THIS_TYPE_IS_NOT_SUPPORTED=1,STORAGE_KIND_MUST_MATCH=1,STORAGE_INDEX_MUST_MATCH=1,CHOLMOD_SUPPORTS_DOUBLE_PRECISION_ONLY=1,SELFADJOINTVIEW_ACCEPTS_UPPER_AND_LOWER_MODE_ONLY=1};};} // end namespace internal} // end namespace Eigen// Specialized implementation for MSVC to avoid "conditional// expression is constant" warnings.  This implementation doesn't// appear to work under GCC, hence the multiple implementations.#if EIGEN_COMP_MSVC#define EIGEN_STATIC_ASSERT(CONDITION,MSG) \{Eigen::internal::static_assertion<bool(CONDITION)>::MSG;}#else// In some cases clang interprets bool(CONDITION) as function declaration#define EIGEN_STATIC_ASSERT(CONDITION,MSG) \if (Eigen::internal::static_assertion<static_cast<bool>(CONDITION)>::MSG) {}#endif#endif // not CXX0X#else // EIGEN_NO_STATIC_ASSERT#define EIGEN_STATIC_ASSERT(CONDITION,MSG) eigen_assert((CONDITION) && #MSG);#endif // EIGEN_NO_STATIC_ASSERT
#endif // EIGEN_STATIC_ASSERT// static assertion failing if the type \a TYPE is not a vector type
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE) \EIGEN_STATIC_ASSERT(TYPE::IsVectorAtCompileTime, \YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX)// static assertion failing if the type \a TYPE is not fixed-size
#define EIGEN_STATIC_ASSERT_FIXED_SIZE(TYPE) \EIGEN_STATIC_ASSERT(TYPE::SizeAtCompileTime!=Eigen::Dynamic, \YOU_CALLED_A_FIXED_SIZE_METHOD_ON_A_DYNAMIC_SIZE_MATRIX_OR_VECTOR)// static assertion failing if the type \a TYPE is not dynamic-size
#define EIGEN_STATIC_ASSERT_DYNAMIC_SIZE(TYPE) \EIGEN_STATIC_ASSERT(TYPE::SizeAtCompileTime==Eigen::Dynamic, \YOU_CALLED_A_DYNAMIC_SIZE_METHOD_ON_A_FIXED_SIZE_MATRIX_OR_VECTOR)// static assertion failing if the type \a TYPE is not a vector type of the given size
#define EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(TYPE, SIZE) \EIGEN_STATIC_ASSERT(TYPE::IsVectorAtCompileTime && TYPE::SizeAtCompileTime==SIZE, \THIS_METHOD_IS_ONLY_FOR_VECTORS_OF_A_SPECIFIC_SIZE)// static assertion failing if the type \a TYPE is not a vector type of the given size
#define EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(TYPE, ROWS, COLS) \EIGEN_STATIC_ASSERT(TYPE::RowsAtCompileTime==ROWS && TYPE::ColsAtCompileTime==COLS, \THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE)// static assertion failing if the two vector expression types are not compatible (same fixed-size or dynamic size)
#define EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(TYPE0,TYPE1) \EIGEN_STATIC_ASSERT( \(int(TYPE0::SizeAtCompileTime)==Eigen::Dynamic \|| int(TYPE1::SizeAtCompileTime)==Eigen::Dynamic \|| int(TYPE0::SizeAtCompileTime)==int(TYPE1::SizeAtCompileTime)),\YOU_MIXED_VECTORS_OF_DIFFERENT_SIZES)#define EIGEN_PREDICATE_SAME_MATRIX_SIZE(TYPE0,TYPE1) \( \(int(Eigen::internal::size_of_xpr_at_compile_time<TYPE0>::ret)==0 && int(Eigen::internal::size_of_xpr_at_compile_time<TYPE1>::ret)==0) \|| (\(int(TYPE0::RowsAtCompileTime)==Eigen::Dynamic \|| int(TYPE1::RowsAtCompileTime)==Eigen::Dynamic \|| int(TYPE0::RowsAtCompileTime)==int(TYPE1::RowsAtCompileTime)) \&&  (int(TYPE0::ColsAtCompileTime)==Eigen::Dynamic \|| int(TYPE1::ColsAtCompileTime)==Eigen::Dynamic \|| int(TYPE0::ColsAtCompileTime)==int(TYPE1::ColsAtCompileTime))\) \)#define EIGEN_STATIC_ASSERT_NON_INTEGER(TYPE) \EIGEN_STATIC_ASSERT(!NumTraits<TYPE>::IsInteger, THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES)// static assertion failing if it is guaranteed at compile-time that the two matrix expression types have different sizes
#define EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(TYPE0,TYPE1) \EIGEN_STATIC_ASSERT( \EIGEN_PREDICATE_SAME_MATRIX_SIZE(TYPE0,TYPE1),\YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES)#define EIGEN_STATIC_ASSERT_SIZE_1x1(TYPE) \EIGEN_STATIC_ASSERT((TYPE::RowsAtCompileTime == 1 || TYPE::RowsAtCompileTime == Dynamic) && \(TYPE::ColsAtCompileTime == 1 || TYPE::ColsAtCompileTime == Dynamic), \THIS_METHOD_IS_ONLY_FOR_1x1_EXPRESSIONS)#define EIGEN_STATIC_ASSERT_LVALUE(Derived) \EIGEN_STATIC_ASSERT(Eigen::internal::is_lvalue<Derived>::value, \THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY)#define EIGEN_STATIC_ASSERT_ARRAYXPR(Derived) \EIGEN_STATIC_ASSERT((Eigen::internal::is_same<typename Eigen::internal::traits<Derived>::XprKind, ArrayXpr>::value), \THIS_METHOD_IS_ONLY_FOR_ARRAYS_NOT_MATRICES)#define EIGEN_STATIC_ASSERT_SAME_XPR_KIND(Derived1, Derived2) \EIGEN_STATIC_ASSERT((Eigen::internal::is_same<typename Eigen::internal::traits<Derived1>::XprKind, \typename Eigen::internal::traits<Derived2>::XprKind \>::value), \YOU_CANNOT_MIX_ARRAYS_AND_MATRICES)// Check that a cost value is positive, and that is stay within a reasonable range
// TODO this check could be enabled for internal debugging only
#define EIGEN_INTERNAL_CHECK_COST_VALUE(C) \EIGEN_STATIC_ASSERT((C)>=0 && (C)<=HugeCost*HugeCost, EIGEN_INTERNAL_ERROR_PLEASE_FILE_A_BUG_REPORT__INVALID_COST_VALUE);#endif // EIGEN_STATIC_ASSERT_H

\src\core\plainobjectbase.h(311): error C2338: YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX相关推荐

  1. error C2338: /RTCc rejects conformant code错误解决

    在编译一个项目时,发现在调试版本时提示这个出错: 1>------ 已启动生成: 项目: simulation2, 配置: Debug Win32 ------ 1>precompiled ...

  2. ROS报错:/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:119:9: error: ‘YOU_MIXED_DIFFERENT

    本机环境:window10+vmware+ubuntu16.04+kinetic   最近跑了跑ORB-SLAM的示例,配置环境按照ORB-SLAM github上的要求依次下载几个包,再按照在Ubu ...

  3. nginx报错:src/core/ngx_murmurhash.c:39:11: error: this statement may fall through [-Werror=implicit-fa

    报错: make -f objs/Makefile install make[1]: Entering directory '/usr/local/nginx/nginx-1.7.7' cc -c - ...

  4. [安装fastfds中的nginx执行make命令报错]src/core/ngx_murmurhash.c:37:11: error

    问题 在nginx文件夹里执行make命令报错 src/core/ngx_murmurhash.c:37:11: error: this statement may fall through [-We ...

  5. make[1]: *** [objs/Makefile:445: objs/src/core/ngx_murmurhash.o] Error

    执行完make以后报错 make[1]: *** [objs/Makefile:445: objs/src/core/ngx_murmurhash.o] Error 1 make[1]: Leavin ...

  6. Assertion desc failed at src/libswscale/swscale_internal.h:668

    Assertion desc failed at src/libswscale/swscale_internal.h:668 其实报错的代码: struct SwsContext *img_conve ...

  7. error: C2338: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一.Q_DECLARE_METATYPE是什么? 示例代码 二.编译错误 三.问题解决 四.源码下载 五.运行效果 前言 一.Q_DECLARE_M ...

  8. nginx编译报错 cc1:所有的警告都被当作是错误 make[1]:*** [objs/Makefile:446:objs/src/core/nginx

    报错信息如下: make -f objs/Makefile make[1]: 进入目录"/opt/nginx-1.8.1" cc -c -pipe -O -W -Wall -Wpo ...

  9. Linux交叉编译问题strace解决 signalfd.c:15: xlat/sfd_flags.h:17: error: size of array 'type name' is negative

    产品不是很稳定,执行shell容易出现段错误,为了定位打算移植strace到嵌入式板子上,环境是MIPS平台,从github上下载的strace源码,编译ARM平台通过( ubuntu 12.04 交 ...

最新文章

  1. 字符串比较strcmp
  2. bootstrap与jQuery结合的动态进度条
  3. 风控扫盲:巴塞尔下的分池与量化风控岗
  4. AcWing1083. Windy数(数位DP)题解
  5. CCNP实验---EIGRP自动汇总
  6. Ubuntu 10.04 开机默认进入命令行模式
  7. NBU查看备份集大小
  8. 【企业】全球顶级思维模式:建立思维模式,把握人性管理
  9. matlab投资组合权重,Matlab做投资组合最优化
  10. 图片居中操作 空行 html,word中进行图片居中对齐批量设置的操作技巧
  11. js 实现文件下载——文档流形式和本地文件下载——基础积累
  12. 删除右键菜单中多余项
  13. 微软梁念坚谈新平台 企业跨界办公随需而变
  14. ABE或IBE中属性撤销的寻找最小覆盖集的基本算法
  15. python turtle画表情包--不可以色色
  16. 青少年CTF - Web - Flag在哪里 Wp WriteUp
  17. VLC全部详细参数,libvlc_new函数参数,VLC SDK开发
  18. 国内外设计及素材站[转载]
  19. 高球嘉年华:2021高博会非去不可的六个理由
  20. python中save 函数_超全Python图像处理讲解!花五天才整理的!

热门文章

  1. 新来的00后实习生太牛了,已经被取代了.....
  2. HDU 1024 ~ Max Sum Plus Plus (DP + XJB优化)
  3. 计网:数据传输率与平均数据传输率
  4. ThinkPHP接入EasyWechat
  5. PlayStation的CD格式
  6. 【OpenI开源项目推荐-GammaGL】支持国内外主流深度学习框架的图神经网络算法库
  7. 【Redis】缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存击穿、缓存降级
  8. 长得类似铁甲小宝的机器人_铁甲小宝中,所有机器人论强弱排名谁最强?
  9. 使用poi导入Excel并下载
  10. RGB转YUV----RGB色域与YUV色域的介绍