如何使用Android NDK修复Eclipse CDT错误“功能’isdigit’无法解决”?

我正在使用 Eclipse Indigo和 Android / NDK混合项目.我添加了C nature,几乎所有东西都在工作.自动构建工作;也就是说,当我编辑文件时,调用ndk-build并成功完成 – 没有构建错误.鼠标悬停代码辅助工作(小窗口弹出有关该功能的信息).如果我将光标放在包含行并按F3,相关的头文件打开(根据我的配置而不是我期望的那个,但是相关的一个 – 可能是一个线索?).

如果我在.cpp文件中选择以下行,则会打开$NDKROOT / platform / android-3 / arch-arm /usr/include / ctype.h:

#include <ctype.h>

(isdigit在此文件中定义)

但是,Eclipse坚持认为isdigit没有定义.我已经阅读了许多帖子,建议静态分析器或索引器都应该受到指责,但我已经尝试了许多建议的解决方案无济于事.

如果我添加如下所示的行,则错误消失,鼠标悬停代码帮助该功能工作:

extern int isdigit(int);

同样,这不是链接错误或编译器错误 – ndk-build完成且没有错误.这是日食里面的东西.谢谢参观!

编辑:我现在认为这是一个代码分析问题.更好的解决方案是编辑代码分析选项以使“无法解析功能”成为警告而不是错误.这样您可以在“问题”视图中看到警告,但继续工作.如果函数真的丢失了,编译器会告诉你!我还有一个新理论,问题在于符号链接后的代码分析器,因为所有“缺失”函数都在符号链接的包含文件中.会喜欢这个理论的任何意见.

解决方法

在花了几天时间研究这样的问题之后,我开发了以下处理问题的方法.

我希望它可以帮助你或其他人:

简介:通常,您在eclipse中遇到的问题是由于eclipse配置问题.以下假设您的C代码使用ndk_build或ndk_build.cmd(在Windows上)构建正常.

> eclipse juno(4.2)和CDT 8.1版没有任何乐趣.使用eclipse indigo(3.7)
>通过查看“安装新软件”,确保已安装并启用了indigo CDT(版本8.0X).认情况下,在某些下载中安装但未启用indigo.
>当您处理本机代码或本机代码的android配置时,请确保您在eclipse中处于C/C++透视图中,而不是Java中.它具有欺骗性,但Java透视图中只有一部分可用选项.如果您在执行“项目>属性”时看到“C/C++ general”作为选择,则可以确定您是C/C++透视图.
>通常的问题是C/C++ -land中的索引器认为存在错误(例如,构建ndk-build工作正常,通常你甚至可以在控制台窗口看到这个).这是由第一个选项卡上“项目>属性> C/C++常规”的“路径和符号”部分中的错误路径引起的.
>要解决此问题,主要工具是右键单击项目,选择“索引”和“搜索未解析的包含”.这将告诉它找不到哪些文件 – 这些文件通常不是你文件中带有粉红色标记文件.
>要查找正确的文件,请在NDKROOT目录(NDK的安装位置)中进行搜索.一个典型的添加是:${NDKROOT} / platforms / android-9 / arch-arm /usr/include或右侧android-N为你的android目标.由于Android的多个版本和C标准库的副本,NDK中有许多标准包含目录的副本.

两个大警告

>当您更改属性>上的索引器配置时,eclipse中的“未解析的包含”视图不会自动更新. C/C++常规/路径和设置因此请务必每次再次运行它. eclipse中的大多数视图都能正确更新!>此外,eclipse编辑器中源代码视图中的小红色/粉红色错误标记也不会自动更新.您必须以某种方式“触摸”文件才能发现错误现在已修复.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...