【问题标题】:Eclipse CDT C/C++ Indexer not detecting few classesEclipse CDT C/C++ 索引器未检测到少数类
【发布时间】:2015-10-16 09:03:28
【问题描述】:

我目前正在使用 OpenCV Android NDK,当我打开示例项目时,CPP 编辑器总是显示错误“IDetector not defined”

class CascadeDetectorAdapter: public DetectionBasedTracker::IDetector
{
public:
    CascadeDetectorAdapter(cv::Ptr<cv::CascadeClassifier> detector):

但是编译和执行工作正常,我可以运行项目

但是编辑器中的错误有点奇怪,我无法 ctrl+click 类,但是 CascadeClassifier 也是 opencv2/objdetect.hpp 中的 CPP 类已正确编入索引,我能够自动完成,但 opencv2/objdetect/detection_based_tracker.hpp 未正确编入索引

我有另一个 HPP 文件说 abcd.hpp 并放置了类似的具有不同名称的类

#ifndef __OPENCV_OBJDETECT_ABCD_HPP__
#define __OPENCV_OBJDETECT_ABCD_HPP__

namespace cv
{

class CV_EXPORTS DetectionBasedTracker1
{
    public:
    class IDetector1
    {

    };
};

};
#endif

此处检测到 DetectionBasedTracker1,但未检测到 DetectionBasedTracker1::IDetector1

这是与嵌套类有关的问题吗?

谁能帮我解决这个问题。

--编辑--

似乎在detection_based_tracker.hpp里面的顶部有以下代码

#if defined(__linux__) || defined(LINUX) || defined(__APPLE__) || defined(__ANDROID__) || \
  (defined(__cplusplus) &&  __cplusplus > 201103L) || (defined(_MSC_VER) && _MSC_VER >= 1700)

如果我删除此代码并重新索引,则错误消失

是否可以使用 eclipse 环境变量或 C/C++ 宏或程序集绕过此 #if define

【问题讨论】:

  • Eclipse 索引器仅在构建后运行。建好项目后还有问题吗?
  • 是的,我在构建之后仍然有问题,但是构建、编译、运行一切正常,除了编辑器显示红色

标签: android c++ eclipse opencv


【解决方案1】:

是的,您可以在项目中添加 # 符号

Project -> Properties -> C/C++ General -> Paths and Symbols -> # Symbols

在此处添加 __ANDROID__ 并提供一些值,例如 1

那么索引器应该能够绕过maro并识别类定义

【讨论】:

  • 是的,一旦我在 detection_based_tracker.hpp 中引入灰色禁用部分,索引器就能够检测到类,我现在可以 ctrl+click , 非常感谢
猜你喜欢
  • 2013-06-12
  • 2018-10-17
  • 2011-06-30
  • 1970-01-01
  • 2019-07-17
  • 2012-06-12
  • 2012-11-18
相关资源
最近更新 更多