我在Ubuntu的Eclipse 3.5.2 Galileo中使用CDT。
我的eclipse的索引器有时不起作用。我的意思是当我ctrl
点击一个函数时Could not find symbol in index
。此外,F3按钮单击导致相同的错误消息。实际上大多数地方都没有工作,并且在很少的地方工作。
我见过Eclipse的其他一些版本,在File菜单下为Indexing列出了一个菜单项。像File-> Indexer-> Rebuild ....但是在我的文件菜单中,没有这样的索引器菜单项。
唯一的方法是使用Eclipse的其他版本还是遗漏了什么?有关这方面的任何指示都会有所帮助。
答案 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)
New->Convert
到C++
项目。
选择您的配置。然后下一个答案 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)
以上步骤对我有用。
答案 11 :(得分:0)
对我来说,问题是在创建项目索引器时没有选择该索引器。删除项目,并在再次创建项目时,我根据需要选择了索引器选项“ LINUX_GCC”,然后它对我有用
答案 12 :(得分:0)
在我的C ++ ARM Cross GCC 项目中遇到了同样的问题。我正在Windows上进行开发,使用Makefile和带有GNU ARM Embedded Toolchain的Ubuntu Docker映像来构建项目。
在我的情况下,摆脱未解决符号的解决方案可以分为两部分:
必须在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}"
注意:是的,我已经在Windows机器上安装了与Docker映像中使用的相同的工具链。
要验证呼叫是否正确,您可以在控制台视图中勾选分配控制台,它将为控制台提供充实的输出。另外,在条目标签中,当展开 CDT Arm Cross GCC内置编译器设置时,您应该会看到包含和符号。
Project Properties -> C/C++ General -> Paths and Symbols
菜单中缺少符号。因为我在Makefile中有定义,所以我也忘记在这里添加MCU的定义。
希望这对某人有帮助! :)
答案 13 :(得分:-1)
如果无法重新编制索引(例如,重建/刷新所有文件等),请在“项目视图”中右键单击该项目。然后按Refresh
。