我在ubuntu上使用Eclipse的Eigen C ++matrix库。 这里是简单的代码:
#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; }
它运行正常,但日食表明一个语义错误称为“方法”形象无法解决“。 现象也出现在我自己的Eigen项目中。 我使用了几个第三方库,但这样的错误只涉及Eigen。 但是,如果我在windows下切换到visual studio 2013,一切正常,我也可以进入Eigen库的相关代码的实现。
我想这是parsing模板库的问题。
在Eclipse中突出显示的错误不是编译器的输出。 通常,Eclipse甚至不知道头文件的位置。 有不同的选项可以告诉Eclipse包含文件的位置:
你可以添加/usr/include/eigen3
的C ++包含的列表。 (右键单击项目,属性,C / C ++常规,路径和符号,所有配置,包括C ++,添加…)。 这是乏味的,必须完成所有配置和项目。
当Eclipse出现在编译器日志中时,Eclipse有时会自动查找包含路径。 例如,如果您使用CMake作为生成器并在Eclipse中构建,那么设置更详细的编译命令会将这些路径转发到Eclipse。 为此,请将set(CMAKE_VERBOSE_MAKEFILE ON)
添加到顶级CMakeLists.txt
。 在Eclipse项目的上下文菜单中进行清理,重新编译,重新运行索引。
或者,您可以设置构建系统生成Eclipse项目的其他构建过程。 例如,CMake可以创建使用忍者构建系统的Eclipse项目。 该项目然后有正确的设置来执行语法高亮。 https://cmake.org/cmake/help/v2.8.9/cmake.html#gen:EclipseCDT4-Ninja