我在这里回答是因为这是最接近我的问题的问题。
我使用 QT Eclipse 与 Helios (3.6.2) 的集成,没有出现重大问题。我使用的是安装到 c:\mingw 的 mingw 4.6.2。我想升级到 Indigo,它解决了我在使用 CDT 时遇到的一些小问题。
然而,在 Indigo (3.7 SR2) 下,Eclipse 开始强调琐碎的功能,因为没有解决,例如:
function 'fprintf' could not be resolved
function 'memset' could not be resolved
即使#include 没有下划线,也可以打开,并将 fprintf 包含在标题中。即使代码本身编译得很好。
如果我回到 Helios,问题就迎刃而解了。
我尝试重新索引,但无济于事。我检查了我的包含路径,它们是:
c:\mingw\include
C:\MinGW\lib\gcc\mingw32\4.6.2\include
起初,我只包含了第一个,但没有包含第二个。但是后来我搜索了“未解析的包含”,stdio.h 包含了 stdarg.h,它不在 mingw 的主包含文件夹中,所以我添加了第二个。但是,printf 仍然没有被解析,并且没有更多的“未解析的包含”。
我用一个类创建了一个新的 C++ 项目。我添加了 stdio.h、上面的路径以及对 fprintf 的调用。有下划线!即使 stdio 中的其他内容没有下划线。
现在我知道这不仅仅是一个 Qt 问题。
在阅读此处建议删除包含路径并编译的底部帖子之前,我已经解决了一段时间。我不相信它会起作用,但试了一下。令人惊讶的是,即使编译失败,错误也消失了!
就在那时,我再次查看了包含路径。它们已通过编译步骤更新为以下内容:
c:/mingw/lib/gcc/mingw32/4.6.2/include-fixed
c:/mingw/include
c:/mingw/lib/gcc/mingw32/4.6.2/include
c:/mingw/lib/gcc/mingw32/4.6.2/include/c++/backward
c:/mingw/lib/gcc/mingw32/4.6.2/include/c++/mingw32
c:/mingw/lib/gcc/mingw32/4.6.2/include/c++
这些被标记为“内置”值,我认为这意味着它们不是我添加的,并且可以在我下次运行构建时更新。
所以,我想教训是,包括 mingw 下的每一个包含路径,即使 Eclipse 没有发现它是一个未解决的包含。
下一步是将所有这些路径放入我的 Qt 项目中。不幸的是,这样做之后,未解决的功能仍然存在。这似乎是 Qt C/C++ 包含路径与 CDT C/C++ 包含路径不同的某种错误。