Eclipse索引不起作用

时间:2012-07-06 06:33:39

标签: c++ eclipse eclipse-cdt

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

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

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

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

14 个答案:

答案 0 :(得分:17)

在我的情况下,没有任何工作,最后我做了以下事情:

 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

答案 1 :(得分:9)

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

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

如果这不起作用,那么你运气不好。 c ++是非常难以解析的语言。

答案 2 :(得分:6)

如果您的索引器卡住并且无限时间挂起,您可以从.metadata删除项目的索引器相关文件。确保eclipse不会同时运行。

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

您可以导航至:

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

.settings/目录中,有.prefs个文件,可以单独存储每个项目的首选项。

例如:org.eclipse.cdt.core.prj-test-project.prefs存储项目的偏好测试项目

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

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

答案 3 :(得分:3)

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

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

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

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

答案 4 :(得分:2)

  1. 右键单击该项目。
  2. 选择New->ConvertC++项目。 选择您的配置。然后下一个
  3. 索引器将开始为所有文件建立索引。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

以下是def has_permission(f): wraps(f) def wrapper(*args, **kwargs): # This is where I want to access the user information instead of processing the key again # # return some new_args ... # return f(*args, **kwargs) return wrapper 失败后使用的解决方案。这个技巧可以避免删除你当前的项目:

Project->C++ Index->Rebuild

PS:确保你的原始项目是一个真正的C ++项目,否则这显然不起作用。

答案 7 :(得分:0)

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

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

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

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

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

...Toolchains:总GCC

答案 8 :(得分:0)

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

答案 9 :(得分:0)

这对我来说很有效:

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

我希望它对任何人都有帮助。

答案 10 :(得分:0)

  1. 执行 eclipse.exe -clean -refresh (安装eclipse的位置)。
  2. 使用给定的源代码文件夹路径在Eclipse中创建一个新的C / C ++项目。 (不适用于基于现有工作空间的新项目)

以上步骤对我有用。

答案 11 :(得分:0)

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

答案 12 :(得分: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嵌入式工具链命令以获取编译器规格的条目:我当前使用的是:

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 Built-in Compiler Settings

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

要验证呼叫是否正确,您可以在控制台视图中勾选分配控制台,它将为控制台提供充实的输出。另外,在条目标签中,当展开 CDT Arm Cross GCC内置编译器设置时,您应该会看到包含和符号。


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

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


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

答案 13 :(得分:-1)

如果无法重新编制索引(例如,重建/刷新所有文件等),请在“项目视图”中右键单击该项目。然后按Refresh