24

我在 Ubuntu 的 Eclipse 3.5.2 Galileo 中使用 CDT。

我的 Eclipse 的索引器有时不工作。我的意思是当我ctrl点击一个功能时,它会说Could not find symbol in index。此外,F3 按钮单击会导致相同的错误消息。实际上,大多数地方它都不起作用,并且在极少数地方起作用。

我见过一些其他版本的 Eclipse,在文件菜单下列出了一个用于索引的菜单项。像 File->Indexer->Rebuild.... 但是在我的 File 菜单中,Indexer 没有这样的菜单项。

唯一的方法是使用其他版本的 Eclipse 还是遗漏了什么?有关此的任何指示都会有所帮助。

4

13 回答 13

23

就我而言,没有任何效果,最后我做了以下事情:

 1) Close the project
 2) Delete the project(do not check from disk option)
 3) create new project with existing code(use the deleted project path)
 4) Successfully indexed my c++ code
于 2015-03-12T09:22:35.570 回答
9

要添加包含要解析的代码的路径,请执行以下步骤:
1. 右键单击​​项目
2. 选择属性
3. 转到 C/C++ 常规
4. 转到路径和符号
5. 如果缺少路径,请添加路径。

要重新解析代码,请执行以下步骤:
1. 右键单击​​项目
2. 选择索引
3. 重建

如果这不起作用,那么你就不走运了。c++ 是一种很难解析的语言。

于 2012-07-06T07:07:23.810 回答
9

如果您的索引器卡住并且无限期挂起,您可以从.metadata. 确保同时没有运行 eclipse。

.metadata目录位于工作区路径中的隐藏文件夹中。

在那里您可以导航到:

<workspace_path>/.metadata/.plugins/org.eclipse.core.runtime/.settings/

.settings/目录中,有一些.prefs文件分别存储了每个项目的首选项。

例如:org.eclipse.cdt.core.prj-test-project.prefs存储项目test-project的首选项

使用文本编辑器打开此文件并删除所有以indexer. 这会将这个特定项目的索引器设置重置为默认值。

indexer或者,您可以删除所有以from开头的行org.eclipse.cdt.core.prefs;这样做将重置整个工作区的索引器设置。

于 2017-01-20T09:21:53.350 回答
4

我相信您可以通过运行清除索引:

rm .metadata/.plugins/org.eclipse.jdt.core/*.index

然后重新启动 Eclipse。然后它将重建其索引。

这在 Java 项目中对我有用,但我想它对于所有(大多数?)项目类型都有相同的索引。

于 2016-08-04T19:17:28.867 回答
2
  1. 右键单击项目。
  2. 选择New->Convert一个C++项目。选择您的配置。然后下一步
  3. 索引器将开始索引所有文件。
于 2020-01-18T06:55:18.147 回答
1

对我来说,这很有效:

  • 右键单击并关闭项目
  • 再次打开项目
  • 右键单击并选择索引->重建

我希望它可以帮助任何人。

于 2019-05-16T11:01:29.117 回答
0

对我来说,创建项目索引器时选择为无是一个问题。删除了项目,再次创建项目时,我根据需要选择了索引器选项“LINUX_GCC”,然后它对我有用

于 2020-11-11T11:19:03.317 回答
0
  1. 在安装 eclipse 的地方执行eclipse.exe -clean -refresh
  2. 使用给定的源代码文件夹路径在 Eclipse 中创建一个新的 C/C++ 项目。(不适用于基于现有工作空间的新项目)

以上步骤对我有用。

于 2019-07-08T10:01:43.397 回答
0

这是我Project->C++ Index->Rebuild失败后使用的解决方案。这个技巧避免删除你当前的项目:

1) Copy the current project (Right click->Copy from Project Explorer)
2) Paste it (Right click->Paste from Project Explorer) and give the copy another name
3) The indexer should now start and index both projects
4) When indexation is complete, you can delete the copy

PS:确保您的原始项目是一个实际的 C++ 项目,否则这显然行不通。

于 2018-02-06T10:29:38.747 回答
0

我遇到了同样的问题,结果发现 index 文件夹归 root 所有(由于某种原因,我必须以 root 身份运行一次 Eclipse)我使用并回收了项目文件夹sudo chown -R username projectfolderpath并解决了问题。

于 2019-02-18T12:13:37.417 回答
0

您可以尝试重建索引。在项目视图中右键单击项目。然后Index -> Rebuild

于 2017-10-09T13:11:33.970 回答
0

将项目转换为 C 或 C++ 特性

Right click on project: 新建 > 转换为 C/C++ 项目

In "Convert to C or C++": 选择 C/C++ 项目

In "Project options": 勾选“指定项目类型”

...Project Type: 选择“Makefile 项目”

...Toolchains: 总海湾合作委员会

于 2018-10-31T11:10:31.070 回答
0

刚刚在我的 C++ ARM Cross GCC项目中遇到了同样的问题。我正在 Windows 上开发,使用 Makefile 和带有 GNU ARM Embedded Toolchain 的 Ubuntu Docker 映像来构建项目。

就我而言,摆脱未解析符号的解决方案可以分为两部分:


  1. CDT Arm Cross GCC 内置编译器设置没有编译器的路径。

Project Properties -> C/C++ General -> Preprocessor Include Paths -> Providers(tab)必须在编译器路径中提供。

使用GNU ARM Embedded Toolchain ,获取编译器规格的命令条目: 我目前使用的是:

C:\GNU_Arm_Embedded_Toolchain\9-2020-q2-update\bin\arm-none-eabi-g++.exe ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD "${INPUTS}"

CDT Arm Cross GCC 内置编译器设置

注意:是的,我在 Windows 机器上安装了与在 Docker 映像中使用的工具链相同的工具链。

要验证调用是否正确,您可以在控制台视图中勾选分配控制台,这将为控制台提供有用的输出。此外,在Entries选项卡中,当您展开CDT Arm Cross GCC 内置编译器设置时,您应该会看到包含的包含和符号。


  1. Project Properties -> C/C++ General -> Paths and Symbols菜单中缺少符号。

因为我在 Makefile 中有我的定义,所以我忘了在这里也添加我的 MCU 的定义。


希望这对某人有帮助!:)

于 2020-11-13T14:46:08.780 回答