注意:这显然是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有。
任何评论将不胜感激。
慕村225694
相关分类