Eclipse编译成功,但仍然出现语义错误

注意:这显然是StackOverflow上经常出现的问题,但是-就我所看到的-人们永远找不到方法或他们的解决方案对我不起作用


问题:

我正在使用Eclipse Juno ADT。一切正常,直到我尝试更新NDK。我用新版本(即)替换了ndk文件夹(ndk-r8d即ndk-r8e),在我的Paths and Symbols配置中,我将includes从g ++ 4.6更改为4.7。


似乎打破了我的索引:我可以编译我的代码,但是Eclipse给出了语义错误,就像[ 1 ]和[ 2 ]中一样。这些错误主要是由来自OpenCV4Android使用的符号,如distance,pt,queryIdx和trainIdx。


当我尝试备份到旧配置时,索引仍然损坏!我找不到改变它的方法。


我尝试过的

清理项目

重建,刷新以及“索引”子菜单中的所有其他选项(在项目上“右键单击”时)

在首选项中禁用/启用索引器

验证trainIdx该Paths and Symbols部分中是否包含仅出现在我的OpenCV4Android中的符号。

在该Paths and Symbols部分中更改我的包含内容的顺序。我基本上试图将OpenCV include放在开头和结尾。

一些观察

什么不起作用

由于以下原因,我认为它是CDT索引:


在命令行中,我可以使用ndk-build clean和构建项目ndk-build。

当我启动Eclipse时,直到打开C ++文件(从该jni文件夹开始)之前,我没有任何错误。

我总是可以构建项目,但是只要打开了C ++文件,由于很多原因,我将无法再运行该应用程序 Field '<name>' could not be resolved.

如果我不打开C ++文件,则Eclipse不会报告任何错误,并且可以成功构建和部署Android应用程序。

有趣的事实

下面的代码报告有关错误line,queryIdx,pt:


cv::line(mRgb, keypointsA[matches[i].queryIdx].pt, keypointsB[matches[i].trainIdx].pt, cv::Scalar(255, 0, 0, 255), 1, 8, 0);

如果我将其编写如下,它将起作用:


cv::DMatch tmpMatch = matches[i];

cv::KeyPoint queryKp = keypointsA[tmpMatch.queryIdx];

cv::KeyPoint trainKp = keypointsB[tmpMatch.trainIdx];

cv::line(mRgb, queryKp.pt, trainKp.pt, cv::Scalar(255, 0, 0, 255), 1, 8, 0);

这并不是说所有的OpenCV的功能没有得到解决:只pt,queryIdx并trainIdx有。


任何评论将不胜感激。


海绵宝宝撒
浏览 761回答 3
3回答

慕村225694

在Eclipse环境中选择的项目首选项中,转到C / C ++常规->代码分析->启动。确保两个复选框均未选中。关闭并重新打开该项目,或者重新启动eclipse并重新生成该项目。
打开App,查看更多内容
随时随地看视频慕课网APP