我在 ubuntu 上通过 Eclipse 使用 Eigen C++ 矩阵库。 这是简单的代码:
#include <iostream>
#include <eigen3/Eigen/Core>
using namespace Eigen;
using namespace std;
int main() {
VectorXcd spec(5);
spec(4) = std::complex<double>(1, 2);
cout << spec(4).imag() << "\n";
return 0;
}
它运行正常,但 eclipse 指示一个名为“无法解析方法‘imag’”的语义错误。 这种现象也出现在我自己的Eigen项目中。我使用了几个第 3 方库,但此类错误仅与 Eigen 有关。 但是,如果我换成windows下的visual studio 2013就一切正常了,也可以进入Eigen库中相关代码的实现。
估计是模板库解析问题
最佳答案
Eclipse 中的错误突出显示不是编译器的输出。 通常,Eclipse 甚至不知道头文件位于何处。 有不同的选项可以告诉 Eclipse 包含文件在哪里:
您可以添加
/usr/include/eigen3
C++ 包含的列表。 (右键单击项目、属性、C/C++ 常规、路径和符号、所有配置、包括、C++、添加...)。这很繁琐,必须针对所有配置和项目完成。当包含路径出现在编译器日志中时,Eclipse 有时会自动找到它们。例如,如果您使用 CMake 作为生成器并在 Eclipse 中构建,设置更详细的编译命令会将这些路径转发给 Eclipse。为此,将
set(CMAKE_VERBOSE_MAKEFILE ON)
添加到您的顶级CMakeLists.txt
。在 Eclipse 项目的上下文菜单中清理、重新编译、重新运行索引。或者,您可以设置不同的构建过程,其中构建系统生成您的 Eclipse 项目。例如,CMake 可以创建使用 Ninja 的 Eclipse 项目。构建系统。该项目然后具有正确的设置来进行语法突出显示。 https://cmake.org/cmake/help/v2.8.9/cmake.html#gen:EclipseCDT4-Ninja
关于c++ - Eclipse 无法完全解析 Eigen C++ 库,但可以编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26029237/