2014-09-25 45 views
3

我在ubuntu上使用Eigen C++矩阵库和Eclipse。 下面是简单的代码: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; 
 
}

它运行好,但日食表示所谓的“方法‘IMAG’无法解析”语义错误。 这种现象也出现在我自己的Eigen项目中。我使用了多个第三方库,但这些错误只涉及Eigen。 但是,如果我在Windows下切换到visual studio 2013,一切都可以,我也可以进入Eigen库中相关代码的实现。

我想这是解析模板库的问题。

+0

我使用NetBeans C++(Ubuntu和窗户) – 2015-03-22 09:29:43

回答

1

在Eclipse中突出显示的错误不是编译器的输出。通常,Eclipse甚至不知道头文件的位置。 有不同的选项来告诉Eclipse包含文件:

  1. 您可以添加/usr/include/eigen3 C的名单++包括。 (右键单击项目,属性,C/C++常规,路径和符号,所有配置,包括C++,添加...)。这是乏味的,必须为所有配置和项目完成。

  2. 当Eclipse出现在编译器日志中时,它有时会自动找到包含路径。例如,如果您使用CMake作为生成器并在Eclipse中构建,那么设置更多详细的编译命令会将这些路径转发到Eclipse。为此,请将set(CMAKE_VERBOSE_MAKEFILE ON)添加到顶级CMakeLists.txt。在Eclipse项目的上下文菜单中进行清理,重新编译,重新运行索引。

  3. 或者,您可以设置构建系统生成Eclipse项目的其他构建过程。例如,CMake可以创建使用Ninja构建系统的Eclipse项目。该项目然后具有正确的设置来执行语法高亮显示。 https://cmake.org/cmake/help/v2.8.9/cmake.html#gen:EclipseCDT4-Ninja

+0

同样的问题,有什么语法highlightning做的问题吗? – colidyre 2015-10-07 11:45:41

+0

你说得对,它是关于Eclipse强调错误和警告,而不是语法。如果问题不限于Eigen,也许这是因为Eclipse不解析C++ 11 http://stackoverflow.com/a/9135135/2079934 – SpamBot 2015-10-07 14:21:03