13

我有一个包含多个项目的工作区,所有项目都可以毫无问题地编译。但是,由于未解析的包含,一些项目在编辑器中给出了很多关于未解析符号的警告。大多数是来自工作区中其他项目或第三方库的标题。

谷歌搜索表明这是索引器的问题,但我没有找到任何关于如何修复它的连贯解释 - 我假设我需要将这些库的路径添加到索引器的 PATH 中,但我看不到任何选项这样做(我正在使用朱诺)。

谁能向我解释如何配置 CDT 的索引器?

我还在两个项目中遇到了未解决的包含 STL 标头的警告。一些 STL 标头已解析,但其他标头未解析,并且两个项目之间的列表似乎不一样(一个找到向量和 iostream 之类的东西,但没有找到 sstream 或字符串,另一个也找不到 iostream) .

可能相关:这些是 C++ 项目,但所有文件扩展名都是 .c。我将 GCC C 编译器命令更改为“g++”来编译它们,但我想我还需要对索引器设置做一些事情来应对它?

4

5 回答 5

8

我有一个类似的问题,我的项目将构建但在 Eclipse Kepler 中显示未解决的包含。

在我的例子中,我采用了一个现有的 ARM 项目并创建了一个使用不同工具链的自定义构建配置。新的构建配置包含所有正确的内容,因此项目构建正确,但索引器没有拾取它。

我通过将索引器设置为使用活动构建配置来修复它。在 Window->Preferences->C/C++->Indexer 中,在标记为“为索引器构建配置”的部分下,我选择了“使用活动构建配置”并将其清除。

于 2014-01-07T19:48:48.740 回答
7

好的,所以我现在已经解决了这个问题。

  1. 通过将其他项目添加为参考,解决了工作区中其他项目和第三方库中未解决的包含问题。我猜编译器知道去哪里看,因为我已将位置添加到包含列表中,但索引器没有(可能是由于 eclipse 只处理一次标头?)

  2. STL 中未解决的包含我通过将所有实际上是 C++ 的 .c 文件更改为 .cpp 来修复。仅将编译命令更改为“g++”显然不足以告诉索引器将项目视为 C++。

在 1) 的情况下,我需要先清理/重建引用项目的索引,以删除未解决的包含错误。

于 2012-08-31T09:41:26.817 回答
5

在工作区中右键单击您的项目,选择Properties-> C++ General-> Paths and Symbols,然后为您的特定编译器添加包含和符号,在可用选项卡上添加库和其他您需要的东西。在那次命中之后Apply- 它应该开始重新索引,并且您的问题应该消失了。

于 2012-08-30T10:44:09.147 回答
0

所有答案都有帮助,但还有另一个技巧可以解决我的问题。我发现与编译器相比,索引器不处理包含路径的子目录。因此,在包含头文件时需要更加具体。

示例
#include "subdirectory\include_2.h"

于 2016-12-30T11:28:45.047 回答
0

附加提示

  • 右键单击您的project-> Index-> 搜索unresolved includes.
  • 在搜索结果中打开文件夹和文件,查看它们有哪些未解决的包含。
  • 找到它们的目录并将它们添加到路径和符号中。

在此处输入图像描述

于 2021-09-19T09:53:00.187 回答