C:\Libraries\Eigen3\include\eigen3\unsupported\Eigen\CXX11\src\Tensor\TensorExpr.h:153: error: C2825: 'RhsXprType': 当后面跟“::”时必须为类或命名空间 c:\libraries\eigen3\include\eigen3\unsupported\eigen\cxx11\src/Tensor/TensorBase.h(33): note: 参见对正在编译的 类 模板 实例化 "Eigen::internal::traits<Derived>" 的引用 with [ Derived=Eigen::TensorCwiseBinaryOp<Eigen::internal::scalar_product_op<unsigned char,unsigned char>,const Eigen::Tensor<uint8_t,2,1,Eigen::DenseIndex>,const float> ] c:\libraries\eigen3\include\eigen3\unsupported\eigen\cxx11\src/Tensor/TensorExpr.h(197): note: 参见对正在编译的 类 模板 实例化 "Eigen::TensorBase<Eigen::TensorCwiseBinaryOp<Eigen::internal::scalar_product_op<unsigned char,unsigned char>,const Derived,const float>,0>" 的引用 with [ Derived=Eigen::Tensor<uint8_t,2,1,Eigen::DenseIndex> ] ..\octDemo\algorithm.cpp(30): note: 参见对正在编译的 类 模板 实例化 "Eigen::TensorCwiseBinaryOp<Eigen::internal::scalar_product_op<unsigned char,unsigned char>,const Derived,const float>" 的引用 with [ Derived=Eigen::Tensor<uint8_t,2,1,Eigen::DenseIndex> ]
时间: 2024-04-27 22:20:01 浏览: 290
这是一个编译错误,看起来是在使用 Eigen 库的 TensorExpr.h 和 TensorBase.h 时出现了问题。错误信息提示了一些相关的类模板实例化的引用。可能的原因包括你的代码中使用了不兼容的 Eigen 版本,或者代码中的一些语法错误导致了这个编译错误。你可以尝试检查代码中使用的 Eigen 版本是否正确,并仔细检查代码中是否有语法错误。如果问题仍然存在,你可以考虑查看 Eigen 库的文档或者向 Eigen 社区寻求帮助。
相关问题
cmake_minimum_required(VERSION 2.8.3) project(ego_planner) set(CMAKE_BUILD_TYPE "Release") ADD_COMPILE_OPTIONS(-std=c++11 ) ADD_COMPILE_OPTIONS(-std=c++14 ) set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g") find_package(Eigen3 REQUIRED) find_package(PCL 1.7 REQUIRED) find_package(catkin REQUIRED COMPONENTS roscpp std_msgs geometry_msgs quadrotor_msgs plan_env path_searching bspline_opt traj_utils message_generation cv_bridge ) # catkin_package(CATKIN_DEPENDS message_runtime) catkin_package( INCLUDE_DIRS include LIBRARIES ego_planner CATKIN_DEPENDS plan_env path_searching bspline_opt traj_utils # DEPENDS system_lib ) include_directories( include SYSTEM ${catkin_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/include ${EIGEN3_INCLUDE_DIR} ${PCL_INCLUDE_DIRS} ) add_executable(ego_planner_node src/ego_planner_node.cpp src/ego_replan_fsm.cpp src/planner_manager.cpp ) target_link_libraries(ego_planner_node ${catkin_LIBRARIES} ) #add_dependencies(ego_planner_node ${${PROJECT_NAME}_EXPORTED_TARGETS}) add_executable(traj_server src/traj_server.cpp) target_link_libraries(traj_server ${catkin_LIBRARIES}) #add_dependencies(traj_server ${${PROJECT_NAME}_EXPORTED_TARGETS})
这段代码是一个 CMakeLists.txt 文件,用于编译一个名为 ego_planner 的工程。该工程依赖于 Eigen3 和 PCL 库,同时也依赖于一些 ROS 的组件,如 roscpp、std_msgs、geometry_msgs、quadrotor_msgs、plan_env、path_searching、bspline_opt、traj_utils 和 message_generation。该工程包含两个可执行文件,一个是 ego_planner_node,另一个是 traj_server。其中 ego_planner_node.cpp 是主程序,它包含了 ego_replan_fsm.cpp 和 planner_manager.cpp 两个文件。traj_server.cpp 是用于生成轨迹的服务器程序。在编译过程中,使用了 C++11 和 C++14 标准,同时开启了 Release 模式。
find_package(Eigen3) include_directories( ${catkin_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIR} )
这段代码是在CMakeLists.txt文件中用来查找和包含Eigen3库的头文件的。
首先,使用find_package(Eigen3)命令查找Eigen3库,并将其设置为变量Eigen3_FOUND、Eigen3_INCLUDE_DIRS和Eigen3_LIBRARIES。其中,Eigen3_FOUND表示是否找到了Eigen3库,Eigen3_INCLUDE_DIRS表示Eigen3头文件的路径,Eigen3_LIBRARIES表示Eigen3库的路径。
然后,使用include_directories()命令将catkin_INCLUDE_DIRS和Eigen3_INCLUDE_DIRS包含进工程中。这样,在编译时,编译器就能够找到这些头文件了。
需要注意的是,使用这段代码前,需要先安装Eigen3库,并将其安装路径添加到CMake的模块搜索路径中,否则会找不到Eigen3库。
阅读全文