错误:此编译器似乎太旧,无法被Eigen支持



我正在尝试编译一个包含特征库的项目,我得到这个错误:

In file included from /home/--/--/--/Eigen/Core:19,
from /home/--/--/--/Eigen/Geometry:11,
from /usr/include/rl-0.7.0/rl/math/Transform.h:34,
from /home/--/--/--/example.cpp:2:
/home/--/--/--/Eigen/src/Core/util/Macros.h:674:2: error: #error This compiler appears to be too old to be supported by Eigen
674 | #error This compiler appears to be too old to be supported by Eigen
|  ^~~~~

我正在使用:

Ubuntu 20.04
  • Cmake 3.16.3
  • VSCode Compiler GCC 10.3.1
  • 特征3.4.90

这个问题似乎与Macros.h文件中的这些行有关:

// The macros EIGEN_HAS_CXX?? defines a rough estimate of available c++ features
// but in practice we should not rely on them but rather on the availability of
// individual features as defined later.
// This is why there is no EIGEN_HAS_CXX17.
#if EIGEN_MAX_CPP_VER<14 || EIGEN_COMP_CXXVER<14 || (EIGEN_COMP_MSVC && EIGEN_COMP_MSVC < 1900) || 
(EIGEN_COMP_ICC && EIGEN_COMP_ICC < 1500) || (EIGEN_COMP_NVCC && EIGEN_COMP_NVCC < 80000) ||     
(EIGEN_COMP_CLANG && ((EIGEN_COMP_CLANG<309) || (defined(__apple_build_version__) && (__apple_build_version__ < 9000000)))) || 
(EIGEN_COMP_GNUC_STRICT && EIGEN_COMP_GNUC<51)
#error This compiler appears to be too old to be supported by Eigen
#endif

你知道如何修复这个错误吗?

正如@Lala5th建议的那样,通过改变c++标准,问题就解决了。

我已经修改了CMakeLists.txt:

来自:

set(CMAKE_CXX_STANDARD 11)

:

set(CMAKE_CXX_STANDARD 17)

(也适用于14)

正如您所注意到的,Macros.h文件告诉我们问题出在编译器版本上。

VSCode编译器GCC 10肯定支持c++17。这意味着你应该改变它的起始标志。在设置。在Json文件中添加以下行:

"code-runner.executorMap": {
"cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
},

根据这个答案

标准Bash的g++

使用g++与-std=c++17标记。

我浪费了两天时间在这个问题上,尝试了公认的答案,但下面的事情对我有效。当我用c++

构建opencv时,遇到了同样的问题。@Lala5th建议使用

使用-DCMAKE_CXX_STANDARD=14或-DCMAKE_CXX_STANDARD=17构建项目

。e用cmake pathToFile -DCMAKE_CXX_STANDARD=17代替cmake pathToFile

相关内容

  • 没有找到相关文章

最新更新