Eigen::Tensor基础示例编译报错求助:为何简单代码无法运行?
解决Eigen::Tensor基础示例编译失败的问题
我之前也踩过这个坑!你的代码逻辑完全没问题,编译失败大概率是C++标准版本不兼容导致的——Eigen的Tensor模块属于C++11新增特性,默认情况下编译器可能没开启对应标准支持。
问题根源
Eigen的unsupported/Eigen/CXX11/Tensor模块依赖C11及以上版本的核心特性(比如变长模板、移动语义),如果编译时没有明确指定C标准版本,编译器会用老旧的C标准(比如C98)去编译,这就会触发大量语法错误,你看到的截断错误信息本质上就是这个原因。
解决办法
1. 直接用g++/clang++编译
在编译命令里加上C++标准参数,比如:
g++ eigen.cpp -o eigen_tensor -std=c++11 -I/usr/local/include/eigen3
如果你的编译器版本比较新,也可以用更高的标准,比如-std=c++14或者-std=c++17,兼容性更好。
2. 用CMake构建
如果是CMake项目,在CMakeLists.txt里添加以下配置:
# 指定C++标准版本 set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 添加Eigen头文件路径 include_directories(/usr/local/include/eigen3) # 编译你的程序 add_executable(eigen_tensor eigen.cpp)
修改完编译配置后,你的代码就能正常编译运行了——setRandom()会给4x4的张量填充随机整数,a += b也会正确执行逐元素加法操作。
内容的提问来源于stack exchange,提问作者Chiel
相关产品推荐
相关产品推荐

